1 7ebf7443Swdenk# 2 eca3aeb3SWolfgang Denk# (C) Copyright 2000-2013 3 7ebf7443Swdenk# Wolfgang Denk, DENX Software Engineering, wd@denx.de. 4 7ebf7443Swdenk# 5 eca3aeb3SWolfgang Denk# SPDX-License-Identifier: GPL-2.0+ 6 7ebf7443Swdenk# 7 7ebf7443Swdenk 8 d19ad726STom RiniVERSION = 2014 9 3e41c54aSTom RiniPATCHLEVEL = 07 10 211e4754SWolfgang DenkSUBLEVEL = 11 a176ff07STom RiniEXTRAVERSION = -rc4 12 5f30f3beSMasahiro YamadaNAME = 13 ae6d1056SWolfgang Denk 14 6825a95bSMasahiro Yamada# *DOCUMENTATION* 15 6825a95bSMasahiro Yamada# To see a list of typical targets execute "make help" 16 6825a95bSMasahiro Yamada# More info can be located in ./README 17 6825a95bSMasahiro Yamada# Comments in this file are targeted only to the developer, do not 18 6825a95bSMasahiro Yamada# expect to learn how to build the kernel reading this file. 19 6825a95bSMasahiro Yamada 20 6825a95bSMasahiro Yamada# Do not: 21 6825a95bSMasahiro Yamada# o use make's built-in rules and variables 22 6825a95bSMasahiro Yamada# (this increases performance and avoids hard-to-debug behaviour); 23 6825a95bSMasahiro Yamada# o print "Entering directory ..."; 24 6825a95bSMasahiro YamadaMAKEFLAGS += -rR --no-print-directory 25 6825a95bSMasahiro Yamada 26 6825a95bSMasahiro Yamada# Avoid funny character set dependencies 27 6825a95bSMasahiro Yamadaunexport LC_ALL 28 6825a95bSMasahiro YamadaLC_COLLATE=C 29 6825a95bSMasahiro YamadaLC_NUMERIC=C 30 6825a95bSMasahiro Yamadaexport LC_COLLATE LC_NUMERIC 31 6825a95bSMasahiro Yamada 32 6825a95bSMasahiro Yamada# We are using a recursive build, so we need to do a little thinking 33 6825a95bSMasahiro Yamada# to get the ordering right. 34 6825a95bSMasahiro Yamada# 35 6825a95bSMasahiro Yamada# Most importantly: sub-Makefiles should only ever modify files in 36 6825a95bSMasahiro Yamada# their own directory. If in some directory we have a dependency on 37 6825a95bSMasahiro Yamada# a file in another dir (which doesn't happen often, but it's often 38 6825a95bSMasahiro Yamada# unavoidable when linking the built-in.o targets which finally 39 6825a95bSMasahiro Yamada# turn into vmlinux), we will call a sub make in that other dir, and 40 6825a95bSMasahiro Yamada# after that we are sure that everything which is in that other dir 41 6825a95bSMasahiro Yamada# is now up to date. 42 6825a95bSMasahiro Yamada# 43 6825a95bSMasahiro Yamada# The only cases where we need to modify files which have global 44 6825a95bSMasahiro Yamada# effects are thus separated out and done before the recursive 45 6825a95bSMasahiro Yamada# descending is started. They are now explicitly listed as the 46 6825a95bSMasahiro Yamada# prepare rule. 47 6825a95bSMasahiro Yamada 48 6825a95bSMasahiro Yamada# To put more focus on warnings, be less verbose as default 49 6825a95bSMasahiro Yamada# Use 'make V=1' to see the full commands 50 6825a95bSMasahiro Yamada 51 6825a95bSMasahiro Yamadaifeq ("$(origin V)", "command line") 52 6825a95bSMasahiro Yamada KBUILD_VERBOSE = $(V) 53 7ebf7443Swdenkendif 54 6825a95bSMasahiro Yamadaifndef KBUILD_VERBOSE 55 6825a95bSMasahiro Yamada KBUILD_VERBOSE = 0 56 6825a95bSMasahiro Yamadaendif 57 6825a95bSMasahiro Yamada 58 6825a95bSMasahiro Yamada# Call a source code checker (by default, "sparse") as part of the 59 6825a95bSMasahiro Yamada# C compilation. 60 6825a95bSMasahiro Yamada# 61 6825a95bSMasahiro Yamada# Use 'make C=1' to enable checking of only re-compiled files. 62 6825a95bSMasahiro Yamada# Use 'make C=2' to enable checking of *all* source files, regardless 63 6825a95bSMasahiro Yamada# of whether they are re-compiled or not. 64 6825a95bSMasahiro Yamada# 65 6825a95bSMasahiro Yamada# See the file "Documentation/sparse.txt" for more details, including 66 6825a95bSMasahiro Yamada# where to get the "sparse" utility. 67 6825a95bSMasahiro Yamada 68 6825a95bSMasahiro Yamadaifeq ("$(origin C)", "command line") 69 6825a95bSMasahiro Yamada KBUILD_CHECKSRC = $(C) 70 6825a95bSMasahiro Yamadaendif 71 6825a95bSMasahiro Yamadaifndef KBUILD_CHECKSRC 72 6825a95bSMasahiro Yamada KBUILD_CHECKSRC = 0 73 6825a95bSMasahiro Yamadaendif 74 6825a95bSMasahiro Yamada 75 6825a95bSMasahiro Yamada# Use make M=dir to specify directory of external module to build 76 6825a95bSMasahiro Yamada# Old syntax make ... SUBDIRS=$PWD is still supported 77 6825a95bSMasahiro Yamada# Setting the environment variable KBUILD_EXTMOD take precedence 78 6825a95bSMasahiro Yamadaifdef SUBDIRS 79 6825a95bSMasahiro Yamada KBUILD_EXTMOD ?= $(SUBDIRS) 80 6825a95bSMasahiro Yamadaendif 81 6825a95bSMasahiro Yamada 82 6825a95bSMasahiro Yamadaifeq ("$(origin M)", "command line") 83 6825a95bSMasahiro Yamada KBUILD_EXTMOD := $(M) 84 6825a95bSMasahiro Yamadaendif 85 6825a95bSMasahiro Yamada 86 9e414032SMasahiro Yamada# kbuild supports saving output files in a separate directory. 87 9e414032SMasahiro Yamada# To locate output files in a separate directory two syntaxes are supported. 88 9e414032SMasahiro Yamada# In both cases the working directory must be the root of the kernel src. 89 9e414032SMasahiro Yamada# 1) O= 90 9e414032SMasahiro Yamada# Use "make O=dir/to/store/output/files/" 91 f9328639SMarian Balakowicz# 92 9e414032SMasahiro Yamada# 2) Set KBUILD_OUTPUT 93 9e414032SMasahiro Yamada# Set the environment variable KBUILD_OUTPUT to point to the directory 94 9e414032SMasahiro Yamada# where the output files shall be placed. 95 9e414032SMasahiro Yamada# export KBUILD_OUTPUT=dir/to/store/output/files/ 96 9e414032SMasahiro Yamada# make 97 f9328639SMarian Balakowicz# 98 9e414032SMasahiro Yamada# The O= assignment takes precedence over the KBUILD_OUTPUT environment 99 9e414032SMasahiro Yamada# variable. 100 7ebf7443Swdenk 101 9e414032SMasahiro Yamada 102 9e414032SMasahiro Yamada# KBUILD_SRC is set on invocation of make in OBJ directory 103 9e414032SMasahiro Yamada# KBUILD_SRC is not intended to be used by the regular user (for now) 104 9e414032SMasahiro Yamadaifeq ($(KBUILD_SRC),) 105 9e414032SMasahiro Yamada 106 9e414032SMasahiro Yamada# OK, Make called in directory where kernel src resides 107 9e414032SMasahiro Yamada# Do we want to locate output files in a separate directory? 108 f9328639SMarian Balakowiczifeq ("$(origin O)", "command line") 109 9e414032SMasahiro Yamada KBUILD_OUTPUT := $(O) 110 f9328639SMarian Balakowiczendif 111 7ebf7443Swdenk 112 9e414032SMasahiro Yamadaifeq ("$(origin W)", "command line") 113 9e414032SMasahiro Yamada export KBUILD_ENABLE_EXTRA_GCC_CHECKS := $(W) 114 9e414032SMasahiro Yamadaendif 115 9e414032SMasahiro Yamada 116 9e414032SMasahiro Yamada# That's our default target when none is given on the command line 117 9e414032SMasahiro YamadaPHONY := _all 118 9e414032SMasahiro Yamada_all: 119 9e414032SMasahiro Yamada 120 9e414032SMasahiro Yamada# Cancel implicit rules on top Makefile 121 9e414032SMasahiro Yamada$(CURDIR)/Makefile Makefile: ; 122 9e414032SMasahiro Yamada 123 9e414032SMasahiro Yamadaifneq ($(KBUILD_OUTPUT),) 124 9e414032SMasahiro Yamada# Invoke a second make in the output directory, passing relevant variables 125 9e414032SMasahiro Yamada# check that the output directory actually exists 126 9e414032SMasahiro Yamadasaved-output := $(KBUILD_OUTPUT) 127 5a449d75SMasahiro YamadaKBUILD_OUTPUT := $(shell mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) \ 128 5a449d75SMasahiro Yamada && /bin/pwd) 129 9e414032SMasahiro Yamada$(if $(KBUILD_OUTPUT),, \ 130 598e2d33SMasahiro Yamada $(error failed to create output directory "$(saved-output)")) 131 9e414032SMasahiro Yamada 132 9e414032SMasahiro YamadaPHONY += $(MAKECMDGOALS) sub-make 133 9e414032SMasahiro Yamada 134 9e414032SMasahiro Yamada$(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make 135 9e414032SMasahiro Yamada @: 136 9e414032SMasahiro Yamada 137 9e414032SMasahiro Yamadasub-make: FORCE 138 9e414032SMasahiro Yamada $(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT) \ 139 9e414032SMasahiro Yamada KBUILD_SRC=$(CURDIR) \ 140 9e414032SMasahiro Yamada KBUILD_EXTMOD="$(KBUILD_EXTMOD)" -f $(CURDIR)/Makefile \ 141 9e414032SMasahiro Yamada $(filter-out _all sub-make,$(MAKECMDGOALS)) 142 9e414032SMasahiro Yamada 143 9e414032SMasahiro Yamada# Leave processing to above invocation of make 144 9e414032SMasahiro Yamadaskip-makefile := 1 145 9e414032SMasahiro Yamadaendif # ifneq ($(KBUILD_OUTPUT),) 146 9e414032SMasahiro Yamadaendif # ifeq ($(KBUILD_SRC),) 147 9e414032SMasahiro Yamada 148 9e414032SMasahiro Yamada# We process the rest of the Makefile if this is the final invocation of make 149 9e414032SMasahiro Yamadaifeq ($(skip-makefile),) 150 9e414032SMasahiro Yamada 151 6825a95bSMasahiro Yamada# If building an external module we do not care about the all: rule 152 6825a95bSMasahiro Yamada# but instead _all depend on modules 153 9e414032SMasahiro YamadaPHONY += all 154 6825a95bSMasahiro Yamadaifeq ($(KBUILD_EXTMOD),) 155 9e414032SMasahiro Yamada_all: all 156 6825a95bSMasahiro Yamadaelse 157 6825a95bSMasahiro Yamada_all: modules 158 6825a95bSMasahiro Yamadaendif 159 9e414032SMasahiro Yamada 160 9e414032SMasahiro Yamadasrctree := $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR)) 161 9e414032SMasahiro Yamadaobjtree := $(CURDIR) 162 9e414032SMasahiro Yamadasrc := $(srctree) 163 9e414032SMasahiro Yamadaobj := $(objtree) 164 9e414032SMasahiro Yamada 165 9e414032SMasahiro YamadaVPATH := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD)) 166 9e414032SMasahiro Yamada 167 9e414032SMasahiro Yamadaexport srctree objtree VPATH 168 9e414032SMasahiro Yamada 169 01286329SMasahiro YamadaMKCONFIG := $(srctree)/mkconfig 170 f9328639SMarian Balakowiczexport MKCONFIG 171 f9328639SMarian Balakowicz 172 5013c09fSWolfgang Denk# Make sure CDPATH settings don't interfere 173 5013c09fSWolfgang Denkunexport CDPATH 174 5013c09fSWolfgang Denk 175 f9328639SMarian Balakowicz######################################################################### 176 f9328639SMarian Balakowicz 177 7ebf7443SwdenkHOSTARCH := $(shell uname -m | \ 178 7ebf7443Swdenk sed -e s/i.86/x86/ \ 179 7ebf7443Swdenk -e s/sun4u/sparc64/ \ 180 7ebf7443Swdenk -e s/arm.*/arm/ \ 181 7ebf7443Swdenk -e s/sa110/arm/ \ 182 7ebf7443Swdenk -e s/ppc64/powerpc/ \ 183 7ebf7443Swdenk -e s/ppc/powerpc/ \ 184 7ebf7443Swdenk -e s/macppc/powerpc/\ 185 7ebf7443Swdenk -e s/sh.*/sh/) 186 7ebf7443Swdenk 187 7ebf7443SwdenkHOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \ 188 7ebf7443Swdenk sed -e 's/\(cygwin\).*/cygwin/') 189 7ebf7443Swdenk 190 7ebf7443Swdenkexport HOSTARCH HOSTOS 191 7ebf7443Swdenk 192 7ebf7443Swdenk# Deal with colliding definitions from tcsh etc. 193 7ebf7443SwdenkVENDOR= 194 7ebf7443Swdenk 195 7ebf7443Swdenk######################################################################### 196 f9328639SMarian Balakowicz 197 1ea6bcd8SMike Frysinger# set default to nothing for native builds 198 a5284efdSWolfgang Denkifeq ($(HOSTARCH),$(ARCH)) 199 1ea6bcd8SMike FrysingerCROSS_COMPILE ?= 200 7ebf7443Swdenkendif 201 7ebf7443Swdenk 202 f6322eb7SMasahiro Yamada# SHELL used by kbuild 203 f6322eb7SMasahiro YamadaCONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ 204 f6322eb7SMasahiro Yamada else if [ -x /bin/bash ]; then echo /bin/bash; \ 205 f6322eb7SMasahiro Yamada else echo sh; fi ; fi) 206 f6322eb7SMasahiro Yamada 207 f6322eb7SMasahiro YamadaHOSTCC = gcc 208 598e2d33SMasahiro YamadaHOSTCXX = g++ 209 f6322eb7SMasahiro YamadaHOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer 210 598e2d33SMasahiro YamadaHOSTCXXFLAGS = -O2 211 598e2d33SMasahiro Yamada 212 f6322eb7SMasahiro Yamadaifeq ($(HOSTOS),cygwin) 213 f6322eb7SMasahiro YamadaHOSTCFLAGS += -ansi 214 f6322eb7SMasahiro Yamadaendif 215 f6322eb7SMasahiro Yamada 216 f6322eb7SMasahiro Yamada# Mac OS X / Darwin's C preprocessor is Apple specific. It 217 f6322eb7SMasahiro Yamada# generates numerous errors and warnings. We want to bypass it 218 f6322eb7SMasahiro Yamada# and use GNU C's cpp. To do this we pass the -traditional-cpp 219 f6322eb7SMasahiro Yamada# option to the compiler. Note that the -traditional-cpp flag 220 f6322eb7SMasahiro Yamada# DOES NOT have the same semantics as GNU C's flag, all it does 221 f6322eb7SMasahiro Yamada# is invoke the GNU preprocessor in stock ANSI/ISO C fashion. 222 f6322eb7SMasahiro Yamada# 223 f6322eb7SMasahiro Yamada# Apple's linker is similar, thanks to the new 2 stage linking 224 f6322eb7SMasahiro Yamada# multiple symbol definitions are treated as errors, hence the 225 f6322eb7SMasahiro Yamada# -multiply_defined suppress option to turn off this error. 226 f6322eb7SMasahiro Yamada# 227 f6322eb7SMasahiro Yamadaifeq ($(HOSTOS),darwin) 228 f6322eb7SMasahiro Yamada# get major and minor product version (e.g. '10' and '6' for Snow Leopard) 229 f6322eb7SMasahiro YamadaDARWIN_MAJOR_VERSION = $(shell sw_vers -productVersion | cut -f 1 -d '.') 230 f6322eb7SMasahiro YamadaDARWIN_MINOR_VERSION = $(shell sw_vers -productVersion | cut -f 2 -d '.') 231 f6322eb7SMasahiro Yamada 232 f6322eb7SMasahiro Yamadaos_x_before = $(shell if [ $(DARWIN_MAJOR_VERSION) -le $(1) -a \ 233 f6322eb7SMasahiro Yamada $(DARWIN_MINOR_VERSION) -le $(2) ] ; then echo "$(3)"; else echo "$(4)"; fi ;) 234 f6322eb7SMasahiro Yamada 235 f6322eb7SMasahiro Yamada# Snow Leopards build environment has no longer restrictions as described above 236 f6322eb7SMasahiro YamadaHOSTCC = $(call os_x_before, 10, 5, "cc", "gcc") 237 f6322eb7SMasahiro YamadaHOSTCFLAGS += $(call os_x_before, 10, 4, "-traditional-cpp") 238 f6322eb7SMasahiro YamadaHOSTLDFLAGS += $(call os_x_before, 10, 5, "-multiply_defined suppress") 239 f6322eb7SMasahiro Yamadaendif 240 f6322eb7SMasahiro Yamada 241 6825a95bSMasahiro Yamada# Decide whether to build built-in, modular, or both. 242 6825a95bSMasahiro Yamada# Normally, just do built-in. 243 6825a95bSMasahiro Yamada 244 6825a95bSMasahiro YamadaKBUILD_MODULES := 245 6825a95bSMasahiro YamadaKBUILD_BUILTIN := 1 246 6825a95bSMasahiro Yamada 247 6825a95bSMasahiro Yamada# If we have only "make modules", don't compile built-in objects. 248 6825a95bSMasahiro Yamada# When we're building modules with modversions, we need to consider 249 6825a95bSMasahiro Yamada# the built-in objects during the descend as well, in order to 250 6825a95bSMasahiro Yamada# make sure the checksums are up to date before we record them. 251 6825a95bSMasahiro Yamada 252 6825a95bSMasahiro Yamadaifeq ($(MAKECMDGOALS),modules) 253 6825a95bSMasahiro Yamada KBUILD_BUILTIN := $(if $(CONFIG_MODVERSIONS),1) 254 6825a95bSMasahiro Yamadaendif 255 6825a95bSMasahiro Yamada 256 6825a95bSMasahiro Yamada# If we have "make <whatever> modules", compile modules 257 6825a95bSMasahiro Yamada# in addition to whatever we do anyway. 258 6825a95bSMasahiro Yamada# Just "make" or "make all" shall build modules as well 259 6825a95bSMasahiro Yamada 260 6825a95bSMasahiro Yamada# U-Boot does not need modules 261 6825a95bSMasahiro Yamada#ifneq ($(filter all _all modules,$(MAKECMDGOALS)),) 262 6825a95bSMasahiro Yamada# KBUILD_MODULES := 1 263 6825a95bSMasahiro Yamada#endif 264 6825a95bSMasahiro Yamada 265 6825a95bSMasahiro Yamada#ifeq ($(MAKECMDGOALS),) 266 6825a95bSMasahiro Yamada# KBUILD_MODULES := 1 267 6825a95bSMasahiro Yamada#endif 268 6825a95bSMasahiro Yamada 269 6825a95bSMasahiro Yamadaexport KBUILD_MODULES KBUILD_BUILTIN 270 6825a95bSMasahiro Yamadaexport KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD 271 6825a95bSMasahiro Yamada 272 6825a95bSMasahiro Yamada# Beautify output 273 6825a95bSMasahiro Yamada# --------------------------------------------------------------------------- 274 6825a95bSMasahiro Yamada# 275 6825a95bSMasahiro Yamada# Normally, we echo the whole command before executing it. By making 276 6825a95bSMasahiro Yamada# that echo $($(quiet)$(cmd)), we now have the possibility to set 277 6825a95bSMasahiro Yamada# $(quiet) to choose other forms of output instead, e.g. 278 6825a95bSMasahiro Yamada# 279 6825a95bSMasahiro Yamada# quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@ 280 6825a95bSMasahiro Yamada# cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $< 281 6825a95bSMasahiro Yamada# 282 6825a95bSMasahiro Yamada# If $(quiet) is empty, the whole command will be printed. 283 6825a95bSMasahiro Yamada# If it is set to "quiet_", only the short version will be printed. 284 6825a95bSMasahiro Yamada# If it is set to "silent_", nothing will be printed at all, since 285 6825a95bSMasahiro Yamada# the variable $(silent_cmd_cc_o_c) doesn't exist. 286 6825a95bSMasahiro Yamada# 287 6825a95bSMasahiro Yamada# A simple variant is to prefix commands with $(Q) - that's useful 288 6825a95bSMasahiro Yamada# for commands that shall be hidden in non-verbose mode. 289 6825a95bSMasahiro Yamada# 290 6825a95bSMasahiro Yamada# $(Q)ln $@ :< 291 6825a95bSMasahiro Yamada# 292 6825a95bSMasahiro Yamada# If KBUILD_VERBOSE equals 0 then the above command will be hidden. 293 6825a95bSMasahiro Yamada# If KBUILD_VERBOSE equals 1 then the above command is displayed. 294 6825a95bSMasahiro Yamada 295 6825a95bSMasahiro Yamadaifeq ($(KBUILD_VERBOSE),1) 296 6825a95bSMasahiro Yamada quiet = 297 6825a95bSMasahiro Yamada Q = 298 6825a95bSMasahiro Yamadaelse 299 6825a95bSMasahiro Yamada quiet=quiet_ 300 6825a95bSMasahiro Yamada Q = @ 301 6825a95bSMasahiro Yamadaendif 302 6825a95bSMasahiro Yamada 303 6825a95bSMasahiro Yamada# If the user is running make -s (silent mode), suppress echoing of 304 6825a95bSMasahiro Yamada# commands 305 6825a95bSMasahiro Yamada 306 598e2d33SMasahiro Yamadaifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4 307 598e2d33SMasahiro Yamadaifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),) 308 598e2d33SMasahiro Yamada quiet=silent_ 309 598e2d33SMasahiro Yamadaendif 310 598e2d33SMasahiro Yamadaelse # make-3.8x 311 6825a95bSMasahiro Yamadaifneq ($(filter s% -s%,$(MAKEFLAGS)),) 312 6825a95bSMasahiro Yamada quiet=silent_ 313 6825a95bSMasahiro Yamadaendif 314 598e2d33SMasahiro Yamadaendif 315 6825a95bSMasahiro Yamada 316 6825a95bSMasahiro Yamadaexport quiet Q KBUILD_VERBOSE 317 6825a95bSMasahiro Yamada 318 9e414032SMasahiro Yamada# Look for make include files relative to root of kernel src 319 9e414032SMasahiro YamadaMAKEFLAGS += --include-dir=$(srctree) 320 9e414032SMasahiro Yamada 321 bf4b3de1SMasahiro Yamada# We need some generic definitions (do not try to remake the file). 322 bf4b3de1SMasahiro Yamada$(srctree)/scripts/Kbuild.include: ; 323 bf4b3de1SMasahiro Yamadainclude $(srctree)/scripts/Kbuild.include 324 bf4b3de1SMasahiro Yamada 325 f6322eb7SMasahiro Yamada# Make variables (CC, etc...) 326 f6322eb7SMasahiro Yamada 327 f6322eb7SMasahiro YamadaAS = $(CROSS_COMPILE)as 328 f6322eb7SMasahiro Yamada# Always use GNU ld 329 f6322eb7SMasahiro Yamadaifneq ($(shell $(CROSS_COMPILE)ld.bfd -v 2> /dev/null),) 330 f6322eb7SMasahiro YamadaLD = $(CROSS_COMPILE)ld.bfd 331 f6322eb7SMasahiro Yamadaelse 332 f6322eb7SMasahiro YamadaLD = $(CROSS_COMPILE)ld 333 f6322eb7SMasahiro Yamadaendif 334 f6322eb7SMasahiro YamadaCC = $(CROSS_COMPILE)gcc 335 f6322eb7SMasahiro YamadaCPP = $(CC) -E 336 f6322eb7SMasahiro YamadaAR = $(CROSS_COMPILE)ar 337 f6322eb7SMasahiro YamadaNM = $(CROSS_COMPILE)nm 338 f6322eb7SMasahiro YamadaLDR = $(CROSS_COMPILE)ldr 339 f6322eb7SMasahiro YamadaSTRIP = $(CROSS_COMPILE)strip 340 f6322eb7SMasahiro YamadaOBJCOPY = $(CROSS_COMPILE)objcopy 341 f6322eb7SMasahiro YamadaOBJDUMP = $(CROSS_COMPILE)objdump 342 f6322eb7SMasahiro YamadaAWK = awk 343 f77d7096SMasahiro YamadaPERL = perl 344 f6322eb7SMasahiro YamadaDTC = dtc 345 f6322eb7SMasahiro YamadaCHECK = sparse 346 f6322eb7SMasahiro Yamada 347 f6322eb7SMasahiro YamadaCHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \ 348 f6322eb7SMasahiro Yamada -Wbitwise -Wno-return-void -D__CHECK_ENDIAN__ $(CF) 349 f6322eb7SMasahiro Yamada 350 2b3c9d3dSMasahiro YamadaKBUILD_CPPFLAGS := -D__KERNEL__ 351 2b3c9d3dSMasahiro Yamada 352 2b3c9d3dSMasahiro YamadaKBUILD_CFLAGS := -Wall -Wstrict-prototypes \ 353 2b3c9d3dSMasahiro Yamada -Wno-format-security \ 354 2b3c9d3dSMasahiro Yamada -fno-builtin -ffreestanding 355 2b3c9d3dSMasahiro YamadaKBUILD_AFLAGS := -D__ASSEMBLY__ 356 2b3c9d3dSMasahiro Yamada 357 7424145fSMasahiro Yamada# Read UBOOTRELEASE from include/config/uboot.release (if it exists) 358 7424145fSMasahiro YamadaUBOOTRELEASE = $(shell cat include/config/uboot.release 2> /dev/null) 359 7424145fSMasahiro YamadaUBOOTVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION) 360 5f30f3beSMasahiro Yamada 361 7424145fSMasahiro Yamadaexport VERSION PATCHLEVEL SUBLEVEL UBOOTRELEASE UBOOTVERSION 362 026f9cf2SMasahiro Yamadaexport ARCH CPU BOARD VENDOR SOC CPUDIR BOARDDIR 363 f6322eb7SMasahiro Yamadaexport CONFIG_SHELL HOSTCC HOSTCFLAGS HOSTLDFLAGS CROSS_COMPILE AS LD CC 364 f6322eb7SMasahiro Yamadaexport CPP AR NM LDR STRIP OBJCOPY OBJDUMP 365 f77d7096SMasahiro Yamadaexport MAKE AWK PERL 366 15c939f9SMasahiro Yamadaexport HOSTCXX HOSTCXXFLAGS DTC CHECK CHECKFLAGS 367 f6322eb7SMasahiro Yamada 368 026f9cf2SMasahiro Yamadaexport KBUILD_CPPFLAGS NOSTDINC_FLAGS UBOOTINCLUDE OBJCOPYFLAGS LDFLAGS 369 2b3c9d3dSMasahiro Yamadaexport KBUILD_CFLAGS KBUILD_AFLAGS 370 2b3c9d3dSMasahiro Yamada 371 6825a95bSMasahiro Yamada# When compiling out-of-tree modules, put MODVERDIR in the module 372 6825a95bSMasahiro Yamada# tree rather than in the kernel tree. The kernel tree might 373 6825a95bSMasahiro Yamada# even be read-only. 374 6825a95bSMasahiro Yamadaexport MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_versions 375 6825a95bSMasahiro Yamada 376 6825a95bSMasahiro Yamada# Files to ignore in find ... statements 377 6825a95bSMasahiro Yamada 378 598e2d33SMasahiro Yamadaexport RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o \ 379 598e2d33SMasahiro Yamada -name CVS -o -name .pc -o -name .hg -o -name .git \) \ 380 598e2d33SMasahiro Yamada -prune -o 381 6825a95bSMasahiro Yamadaexport RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \ 382 6825a95bSMasahiro Yamada --exclude CVS --exclude .pc --exclude .hg --exclude .git 383 6825a95bSMasahiro Yamada 384 6825a95bSMasahiro Yamada# =========================================================================== 385 6825a95bSMasahiro Yamada# Rules shared between *config targets and build targets 386 6825a95bSMasahiro Yamada 387 6825a95bSMasahiro Yamada# Basic helpers built in scripts/ 388 6825a95bSMasahiro YamadaPHONY += scripts_basic 389 6825a95bSMasahiro Yamadascripts_basic: 390 6825a95bSMasahiro Yamada $(Q)$(MAKE) $(build)=scripts/basic 391 6825a95bSMasahiro Yamada $(Q)rm -f .tmp_quiet_recordmcount 392 6825a95bSMasahiro Yamada 393 6825a95bSMasahiro Yamada# To avoid any implicit rule to kick in, define an empty command. 394 6825a95bSMasahiro Yamadascripts/basic/%: scripts_basic ; 395 6825a95bSMasahiro Yamada 396 3341bfecSMasahiro YamadaPHONY += outputmakefile 397 3341bfecSMasahiro Yamada# outputmakefile generates a Makefile in the output directory, if using a 398 3341bfecSMasahiro Yamada# separate output directory. This allows convenient use of make in the 399 3341bfecSMasahiro Yamada# output directory. 400 3341bfecSMasahiro Yamadaoutputmakefile: 401 3341bfecSMasahiro Yamadaifneq ($(KBUILD_SRC),) 402 3341bfecSMasahiro Yamada $(Q)ln -fsn $(srctree) source 403 3341bfecSMasahiro Yamada $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile \ 404 3341bfecSMasahiro Yamada $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL) 405 3341bfecSMasahiro Yamadaendif 406 3341bfecSMasahiro Yamada 407 433b2f1eSMasahiro Yamada# To make sure we do not include .config for any of the *config targets 408 433b2f1eSMasahiro Yamada# catch them early, and hand them over to scripts/kconfig/Makefile 409 433b2f1eSMasahiro Yamada# It is allowed to specify more targets when calling make, including 410 433b2f1eSMasahiro Yamada# mixing *config targets and build targets. 411 433b2f1eSMasahiro Yamada# For example 'make oldconfig all'. 412 433b2f1eSMasahiro Yamada# Detect when mixed targets is specified, and make a second invocation 413 433b2f1eSMasahiro Yamada# of make so .config is not included in this case either (for *config). 414 6825a95bSMasahiro Yamada 415 7424145fSMasahiro Yamadaversion_h := include/generated/version_autogenerated.h 416 7424145fSMasahiro Yamadatimestamp_h := include/generated/timestamp_autogenerated.h 417 7424145fSMasahiro Yamada 418 433b2f1eSMasahiro Yamadano-dot-config-targets := clean clobber mrproper distclean \ 419 27651187SMasahiro Yamada help %docs check% coccicheck \ 420 4642e002SMasahiro Yamada ubootversion backup tools-only 421 2b3c9d3dSMasahiro Yamada 422 433b2f1eSMasahiro Yamadaconfig-targets := 0 423 433b2f1eSMasahiro Yamadamixed-targets := 0 424 433b2f1eSMasahiro Yamadadot-config := 1 425 2b3c9d3dSMasahiro Yamada 426 433b2f1eSMasahiro Yamadaifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),) 427 433b2f1eSMasahiro Yamada ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),) 428 433b2f1eSMasahiro Yamada dot-config := 0 429 2b3c9d3dSMasahiro Yamada endif 430 2b3c9d3dSMasahiro Yamadaendif 431 2b3c9d3dSMasahiro Yamada 432 433b2f1eSMasahiro Yamadaifeq ($(KBUILD_EXTMOD),) 433 433b2f1eSMasahiro Yamada ifneq ($(filter config %config,$(MAKECMDGOALS)),) 434 433b2f1eSMasahiro Yamada config-targets := 1 435 433b2f1eSMasahiro Yamada ifneq ($(filter-out config %config,$(MAKECMDGOALS)),) 436 433b2f1eSMasahiro Yamada mixed-targets := 1 437 433b2f1eSMasahiro Yamada endif 438 433b2f1eSMasahiro Yamada endif 439 433b2f1eSMasahiro Yamadaendif 440 433b2f1eSMasahiro Yamada 441 433b2f1eSMasahiro Yamadaifeq ($(mixed-targets),1) 442 433b2f1eSMasahiro Yamada# =========================================================================== 443 433b2f1eSMasahiro Yamada# We're called with mixed targets (*config and build targets). 444 433b2f1eSMasahiro Yamada# Handle them one by one. 445 433b2f1eSMasahiro Yamada 446 53bca5abSMasahiro YamadaPHONY += $(MAKECMDGOALS) build-one-by-one 447 53bca5abSMasahiro Yamada 448 53bca5abSMasahiro Yamada$(MAKECMDGOALS): build-one-by-one 449 53bca5abSMasahiro Yamada @: 450 53bca5abSMasahiro Yamada 451 53bca5abSMasahiro Yamadabuild-one-by-one: 452 53bca5abSMasahiro Yamada $(Q)set -e; \ 453 53bca5abSMasahiro Yamada for i in $(MAKECMDGOALS); do \ 454 53bca5abSMasahiro Yamada $(MAKE) -f $(srctree)/Makefile $$i; \ 455 53bca5abSMasahiro Yamada done 456 433b2f1eSMasahiro Yamada 457 433b2f1eSMasahiro Yamadaelse 458 433b2f1eSMasahiro Yamadaifeq ($(config-targets),1) 459 433b2f1eSMasahiro Yamada# =========================================================================== 460 433b2f1eSMasahiro Yamada# *config targets only - make sure prerequisites are updated, and descend 461 433b2f1eSMasahiro Yamada# in scripts/kconfig to make the *config target 462 433b2f1eSMasahiro Yamada 463 433b2f1eSMasahiro Yamada# Read arch specific Makefile to set KBUILD_DEFCONFIG as needed. 464 433b2f1eSMasahiro Yamada# KBUILD_DEFCONFIG may point out an alternative default configuration 465 433b2f1eSMasahiro Yamada# used for 'make defconfig' 466 433b2f1eSMasahiro Yamada 467 3341bfecSMasahiro Yamada%_config:: outputmakefile 468 433b2f1eSMasahiro Yamada @$(MKCONFIG) -A $(@:_config=) 469 433b2f1eSMasahiro Yamada 470 433b2f1eSMasahiro Yamadaelse 471 433b2f1eSMasahiro Yamada# =========================================================================== 472 433b2f1eSMasahiro Yamada# Build targets only - this includes vmlinux, arch specific targets, clean 473 433b2f1eSMasahiro Yamada# targets and others. In general all targets except *config targets. 474 433b2f1eSMasahiro Yamada 475 433b2f1eSMasahiro Yamada# load ARCH, BOARD, and CPU configuration 476 433b2f1eSMasahiro Yamada-include include/config.mk 477 433b2f1eSMasahiro Yamada 478 433b2f1eSMasahiro Yamadaifeq ($(dot-config),1) 479 433b2f1eSMasahiro Yamada# Read in config 480 433b2f1eSMasahiro Yamada-include include/autoconf.mk 481 433b2f1eSMasahiro Yamada-include include/autoconf.mk.dep 482 433b2f1eSMasahiro Yamada 483 92b197f0SWolfgang Denk# load other configuration 484 433b2f1eSMasahiro Yamadainclude $(srctree)/config.mk 485 92b197f0SWolfgang Denk 486 433b2f1eSMasahiro Yamadaifeq ($(wildcard include/config.mk),) 487 433b2f1eSMasahiro Yamada$(error "System not configured - see README") 488 ced0715dSMasahiro Yamadaendif 489 fada9e20SSimon Glass 490 d51dfff7SIlya Yanok# If board code explicitly specified LDSCRIPT or CONFIG_SYS_LDSCRIPT, use 491 d51dfff7SIlya Yanok# that (or fail if absent). Otherwise, search for a linker script in a 492 d51dfff7SIlya Yanok# standard location. 493 d51dfff7SIlya Yanok 494 d51dfff7SIlya Yanokifndef LDSCRIPT 495 4379ac61SMasahiro Yamada #LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot.lds.debug 496 d51dfff7SIlya Yanok ifdef CONFIG_SYS_LDSCRIPT 497 d51dfff7SIlya Yanok # need to strip off double quotes 498 4a377552SMasahiro Yamada LDSCRIPT := $(srctree)/$(CONFIG_SYS_LDSCRIPT:"%"=%) 499 d51dfff7SIlya Yanok endif 500 d51dfff7SIlya Yanokendif 501 d51dfff7SIlya Yanok 502 ee60197eSSimon Glass# If there is no specified link script, we look in a number of places for it 503 d51dfff7SIlya Yanokifndef LDSCRIPT 504 d51dfff7SIlya Yanok ifeq ($(wildcard $(LDSCRIPT)),) 505 4379ac61SMasahiro Yamada LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot.lds 506 d51dfff7SIlya Yanok endif 507 d51dfff7SIlya Yanok ifeq ($(wildcard $(LDSCRIPT)),) 508 4379ac61SMasahiro Yamada LDSCRIPT := $(srctree)/$(CPUDIR)/u-boot.lds 509 d51dfff7SIlya Yanok endif 510 d51dfff7SIlya Yanok ifeq ($(wildcard $(LDSCRIPT)),) 511 4379ac61SMasahiro Yamada LDSCRIPT := $(srctree)/arch/$(ARCH)/cpu/u-boot.lds 512 ee60197eSSimon Glass endif 513 d51dfff7SIlya Yanokendif 514 d51dfff7SIlya Yanok 515 433b2f1eSMasahiro Yamadaelse 516 433b2f1eSMasahiro Yamada 517 433b2f1eSMasahiro Yamada 518 433b2f1eSMasahiro Yamadaendif # $(dot-config) 519 433b2f1eSMasahiro Yamada 520 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += -Os #-fomit-frame-pointer 521 433b2f1eSMasahiro Yamada 522 433b2f1eSMasahiro Yamadaifdef BUILD_TAG 523 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += -DBUILD_TAG='"$(BUILD_TAG)"' 524 433b2f1eSMasahiro Yamadaendif 525 433b2f1eSMasahiro Yamada 526 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += $(call cc-option,-fno-stack-protector) 527 433b2f1eSMasahiro Yamada 528 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += -g 529 433b2f1eSMasahiro Yamada# $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g<format> 530 433b2f1eSMasahiro Yamada# option to the assembler. 531 433b2f1eSMasahiro YamadaKBUILD_AFLAGS += -g 532 433b2f1eSMasahiro Yamada 533 433b2f1eSMasahiro Yamada# Report stack usage if supported 534 5b1f1f4aSMasahiro Yamadaifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-stack-usage.sh $(CC)),y) 535 5b1f1f4aSMasahiro Yamada KBUILD_CFLAGS += -fstack-usage 536 5b1f1f4aSMasahiro Yamadaendif 537 433b2f1eSMasahiro Yamada 538 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += $(call cc-option,-Wno-format-nonliteral) 539 433b2f1eSMasahiro Yamada 540 433b2f1eSMasahiro Yamada# turn jbsr into jsr for m68k 541 433b2f1eSMasahiro Yamadaifeq ($(ARCH),m68k) 542 433b2f1eSMasahiro Yamadaifeq ($(findstring 3.4,$(shell $(CC) --version)),3.4) 543 433b2f1eSMasahiro YamadaKBUILD_AFLAGS += -Wa,-gstabs,-S 544 433b2f1eSMasahiro Yamadaendif 545 433b2f1eSMasahiro Yamadaendif 546 433b2f1eSMasahiro Yamada 547 65bb6d8dSMasahiro Yamada# Prohibit date/time macros, which would make the build non-deterministic 548 65bb6d8dSMasahiro YamadaKBUILD_CFLAGS += $(call cc-option,-Werror=date-time) 549 65bb6d8dSMasahiro Yamada 550 433b2f1eSMasahiro Yamadaifneq ($(CONFIG_SYS_TEXT_BASE),) 551 433b2f1eSMasahiro YamadaKBUILD_CPPFLAGS += -DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE) 552 433b2f1eSMasahiro Yamadaendif 553 433b2f1eSMasahiro Yamada 554 433b2f1eSMasahiro Yamadaexport CONFIG_SYS_TEXT_BASE 555 433b2f1eSMasahiro Yamada 556 0e6256d0SMasahiro Yamada# Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments 557 0e6256d0SMasahiro YamadaKBUILD_CPPFLAGS += $(KCPPFLAGS) 558 0e6256d0SMasahiro YamadaKBUILD_AFLAGS += $(KAFLAGS) 559 0e6256d0SMasahiro YamadaKBUILD_CFLAGS += $(KCFLAGS) 560 0e6256d0SMasahiro Yamada 561 433b2f1eSMasahiro Yamada# Use UBOOTINCLUDE when you must reference the include/ directory. 562 433b2f1eSMasahiro Yamada# Needed to be compatible with the O= option 563 f5c66bdbSMasahiro YamadaUBOOTINCLUDE := \ 564 f5c66bdbSMasahiro Yamada -Iinclude \ 565 f5c66bdbSMasahiro Yamada $(if $(KBUILD_SRC), -I$(srctree)/include) \ 566 433b2f1eSMasahiro Yamada -I$(srctree)/arch/$(ARCH)/include 567 433b2f1eSMasahiro Yamada 568 433b2f1eSMasahiro YamadaNOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) 569 433b2f1eSMasahiro YamadaCHECKFLAGS += $(NOSTDINC_FLAGS) 570 433b2f1eSMasahiro Yamada 571 433b2f1eSMasahiro Yamada# FIX ME 572 026f9cf2SMasahiro Yamadacpp_flags := $(KBUILD_CPPFLAGS) $(PLATFORM_CPPFLAGS) $(UBOOTINCLUDE) \ 573 026f9cf2SMasahiro Yamada $(NOSTDINC_FLAGS) 574 433b2f1eSMasahiro Yamadac_flags := $(KBUILD_CFLAGS) $(cpp_flags) 575 433b2f1eSMasahiro Yamada 576 7ebf7443Swdenk######################################################################### 577 7ebf7443Swdenk# U-Boot objects....order is important (i.e. start must be first) 578 7ebf7443Swdenk 579 e8a8b824SMasahiro Yamadahead-y := $(CPUDIR)/start.o 580 e8a8b824SMasahiro Yamadahead-$(CONFIG_4xx) += arch/powerpc/cpu/ppc4xx/resetvec.o 581 e8a8b824SMasahiro Yamadahead-$(CONFIG_MPC85xx) += arch/powerpc/cpu/mpc85xx/resetvec.o 582 7ebf7443Swdenk 583 9e414032SMasahiro YamadaHAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n) 584 f9328639SMarian Balakowicz 585 656de6b8SMasahiro Yamadalibs-y += lib/ 586 656de6b8SMasahiro Yamadalibs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/ 587 656de6b8SMasahiro Yamadalibs-y += $(CPUDIR)/ 588 1d9f4105Swdenkifdef SOC 589 656de6b8SMasahiro Yamadalibs-y += $(CPUDIR)/$(SOC)/ 590 1d9f4105Swdenkendif 591 656de6b8SMasahiro Yamadalibs-$(CONFIG_OF_EMBED) += dts/ 592 656de6b8SMasahiro Yamadalibs-y += arch/$(ARCH)/lib/ 593 656de6b8SMasahiro Yamadalibs-y += fs/ 594 656de6b8SMasahiro Yamadalibs-y += net/ 595 656de6b8SMasahiro Yamadalibs-y += disk/ 596 656de6b8SMasahiro Yamadalibs-y += drivers/ 597 6494d708SSimon Glasslibs-$(CONFIG_DM) += drivers/core/ 598 656de6b8SMasahiro Yamadalibs-y += drivers/dma/ 599 656de6b8SMasahiro Yamadalibs-y += drivers/gpio/ 600 656de6b8SMasahiro Yamadalibs-y += drivers/i2c/ 601 656de6b8SMasahiro Yamadalibs-y += drivers/input/ 602 656de6b8SMasahiro Yamadalibs-y += drivers/mmc/ 603 656de6b8SMasahiro Yamadalibs-y += drivers/mtd/ 604 656de6b8SMasahiro Yamadalibs-$(CONFIG_CMD_NAND) += drivers/mtd/nand/ 605 656de6b8SMasahiro Yamadalibs-y += drivers/mtd/onenand/ 606 656de6b8SMasahiro Yamadalibs-$(CONFIG_CMD_UBI) += drivers/mtd/ubi/ 607 656de6b8SMasahiro Yamadalibs-y += drivers/mtd/spi/ 608 656de6b8SMasahiro Yamadalibs-y += drivers/net/ 609 656de6b8SMasahiro Yamadalibs-y += drivers/net/phy/ 610 656de6b8SMasahiro Yamadalibs-y += drivers/pci/ 611 656de6b8SMasahiro Yamadalibs-y += drivers/power/ \ 612 e2906a59SMasahiro Yamada drivers/power/fuel_gauge/ \ 613 e2906a59SMasahiro Yamada drivers/power/mfd/ \ 614 e2906a59SMasahiro Yamada drivers/power/pmic/ \ 615 e2906a59SMasahiro Yamada drivers/power/battery/ 616 656de6b8SMasahiro Yamadalibs-y += drivers/spi/ 617 656de6b8SMasahiro Yamadalibs-$(CONFIG_FMAN_ENET) += drivers/net/fm/ 618 656de6b8SMasahiro Yamadalibs-$(CONFIG_SYS_FSL_DDR) += drivers/ddr/fsl/ 619 656de6b8SMasahiro Yamadalibs-y += drivers/serial/ 620 656de6b8SMasahiro Yamadalibs-y += drivers/usb/eth/ 621 656de6b8SMasahiro Yamadalibs-y += drivers/usb/gadget/ 622 656de6b8SMasahiro Yamadalibs-y += drivers/usb/host/ 623 656de6b8SMasahiro Yamadalibs-y += drivers/usb/musb/ 624 656de6b8SMasahiro Yamadalibs-y += drivers/usb/musb-new/ 625 656de6b8SMasahiro Yamadalibs-y += drivers/usb/phy/ 626 656de6b8SMasahiro Yamadalibs-y += drivers/usb/ulpi/ 627 656de6b8SMasahiro Yamadalibs-y += common/ 628 656de6b8SMasahiro Yamadalibs-y += lib/libfdt/ 629 656de6b8SMasahiro Yamadalibs-$(CONFIG_API) += api/ 630 656de6b8SMasahiro Yamadalibs-$(CONFIG_HAS_POST) += post/ 631 656de6b8SMasahiro Yamadalibs-y += test/ 632 2e7d35d2SSimon Glasslibs-y += test/dm/ 633 39f7611fSSimon Glasslibs-$(CONFIG_DM_DEMO) += drivers/demo/ 634 f9328639SMarian Balakowicz 635 24e8bee5SAlison Wangifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35 mxs vf610)) 636 656de6b8SMasahiro Yamadalibs-y += arch/$(ARCH)/imx-common/ 637 18936ee2SJason Liuendif 638 18936ee2SJason Liu 639 656de6b8SMasahiro Yamadalibs-$(CONFIG_ARM) += arch/arm/cpu/ 640 656de6b8SMasahiro Yamadalibs-$(CONFIG_PPC) += arch/powerpc/cpu/ 641 852bd07cSMinkyu Kang 642 33a02da0SMasahiro Yamadalibs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/) 643 08e39a84SMasahiro Yamada 644 656de6b8SMasahiro Yamadalibs-y := $(sort $(libs-y)) 645 656de6b8SMasahiro Yamada 646 656de6b8SMasahiro Yamadau-boot-dirs := $(patsubst %/,%,$(filter %/, $(libs-y))) tools examples 647 656de6b8SMasahiro Yamada 648 656de6b8SMasahiro Yamadau-boot-alldirs := $(sort $(u-boot-dirs) $(patsubst %/,%,$(filter %/, $(libs-)))) 649 656de6b8SMasahiro Yamada 650 656de6b8SMasahiro Yamadalibs-y := $(patsubst %/, %/built-in.o, $(libs-y)) 651 656de6b8SMasahiro Yamada 652 656de6b8SMasahiro Yamadau-boot-init := $(head-y) 653 656de6b8SMasahiro Yamadau-boot-main := $(libs-y) 654 656de6b8SMasahiro Yamada 655 a8c7c708Swdenk 656 4f7cb08eSwdenk# Add GCC lib 657 cd2e46cbSMasahiro Yamadaifdef CONFIG_USE_PRIVATE_LIBGCC 658 cd2e46cbSMasahiro Yamadaifeq ($(CONFIG_USE_PRIVATE_LIBGCC),y) 659 a86cf89cSMasahiro YamadaPLATFORM_LIBGCC = arch/$(ARCH)/lib/lib.a 660 52b1bf2cSWolfgang Denkelse 661 cd2e46cbSMasahiro YamadaPLATFORM_LIBGCC = -L $(CONFIG_USE_PRIVATE_LIBGCC) -lgcc 662 52b1bf2cSWolfgang Denkendif 663 52b1bf2cSWolfgang Denkelse 664 6825a95bSMasahiro YamadaPLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(c_flags) -print-libgcc-file-name`) -lgcc 665 52b1bf2cSWolfgang Denkendif 666 52b1bf2cSWolfgang DenkPLATFORM_LIBS += $(PLATFORM_LIBGCC) 667 52b1bf2cSWolfgang Denkexport PLATFORM_LIBS 668 e75e73ddSAlexey Brodkinexport PLATFORM_LIBGCC 669 3d3befa7Swdenk 670 6ac9f479SMike Frysinger# Special flags for CPP when processing the linker script. 671 6ac9f479SMike Frysinger# Pass the version down so we can handle backwards compatibility 672 6ac9f479SMike Frysinger# on the fly. 673 6ac9f479SMike FrysingerLDPPFLAGS += \ 674 4379ac61SMasahiro Yamada -include $(srctree)/include/u-boot/u-boot.lds.h \ 675 7e6403a6SSimon Glass -DCPUDIR=$(CPUDIR) \ 676 6ac9f479SMike Frysinger $(shell $(LD) --version | \ 677 6ac9f479SMike Frysinger sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p') 678 6ac9f479SMike Frysinger 679 7ebf7443Swdenk######################################################################### 680 bdccc4feSwdenk######################################################################### 681 7ebf7443Swdenk 682 f3a14d37SMike Frysingerifneq ($(CONFIG_BOARD_SIZE_LIMIT),) 683 f3a14d37SMike FrysingerBOARD_SIZE_CHECK = \ 684 f3a14d37SMike Frysinger @actual=`wc -c $@ | awk '{print $$1}'`; \ 685 d060e6f4SJoe Hershberger limit=`printf "%d" $(CONFIG_BOARD_SIZE_LIMIT)`; \ 686 f3a14d37SMike Frysinger if test $$actual -gt $$limit; then \ 687 d060e6f4SJoe Hershberger echo "$@ exceeds file size limit:" >&2 ; \ 688 d060e6f4SJoe Hershberger echo " limit: $$limit bytes" >&2 ; \ 689 d060e6f4SJoe Hershberger echo " actual: $$actual bytes" >&2 ; \ 690 d060e6f4SJoe Hershberger echo " excess: $$((actual - limit)) bytes" >&2; \ 691 f3a14d37SMike Frysinger exit 1; \ 692 f3a14d37SMike Frysinger fi 693 f3a14d37SMike Frysingerelse 694 f3a14d37SMike FrysingerBOARD_SIZE_CHECK = 695 f3a14d37SMike Frysingerendif 696 f3a14d37SMike Frysinger 697 8137af19SScott Wood# Statically apply RELA-style relocations (currently arm64 only) 698 8137af19SScott Woodifneq ($(CONFIG_STATIC_RELA),) 699 8137af19SScott Wood# $(1) is u-boot ELF, $(2) is u-boot bin, $(3) is text base 700 8137af19SScott WoodDO_STATIC_RELA = \ 701 8137af19SScott Wood start=$$($(NM) $(1) | grep __rel_dyn_start | cut -f 1 -d ' '); \ 702 8137af19SScott Wood end=$$($(NM) $(1) | grep __rel_dyn_end | cut -f 1 -d ' '); \ 703 9e414032SMasahiro Yamada tools/relocate-rela $(2) $(3) $$start $$end 704 8137af19SScott Woodelse 705 8137af19SScott WoodDO_STATIC_RELA = 706 8137af19SScott Woodendif 707 8137af19SScott Wood 708 3e88337bSMike Frysinger# Always append ALL so that arch config.mk's can add custom ones 709 89742924SSimon GlassALL-y += u-boot.srec u-boot.bin System.map binary_size_check 710 e935a374SHaiying Wang 711 9e414032SMasahiro YamadaALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin 712 89ad7be8SPrabhakar Kushwahaifeq ($(CONFIG_SPL_FSL_PBL),y) 713 89ad7be8SPrabhakar KushwahaALL-$(CONFIG_RAMBOOT_PBL) += u-boot-with-spl-pbl.bin 714 89ad7be8SPrabhakar Kushwahaelse 715 9e414032SMasahiro YamadaALL-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl 716 89ad7be8SPrabhakar Kushwahaendif 717 9e414032SMasahiro YamadaALL-$(CONFIG_SPL) += spl/u-boot-spl.bin 718 9e414032SMasahiro YamadaALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img 719 9e414032SMasahiro YamadaALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin 720 0d1e8aacSMasahiro YamadaALL-$(CONFIG_OF_SEPARATE) += u-boot.dtb u-boot-dtb.bin 721 2405d09cSMasahiro Yamadaifeq ($(CONFIG_SPL_FRAMEWORK),y) 722 2405d09cSMasahiro YamadaALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb.img 723 2405d09cSMasahiro Yamadaendif 724 714a5621SSimon GlassALL-$(CONFIG_OF_HOSTFILE) += u-boot.dtb 725 b343bbb5SVadim Bendeburyifneq ($(CONFIG_SPL_TARGET),) 726 9e414032SMasahiro YamadaALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%) 727 b343bbb5SVadim Bendeburyendif 728 9e414032SMasahiro YamadaALL-$(CONFIG_REMAKE_ELF) += u-boot.elf 729 7ebf7443Swdenk 730 12b7b70cSAllen Martin# enable combined SPL/u-boot/dtb rules for tegra 731 6d6c0baeSTom Warrenifneq ($(CONFIG_TEGRA),) 732 7dcd3a21SVidya Sagarifeq ($(CONFIG_SPL),y) 733 12b7b70cSAllen Martinifeq ($(CONFIG_OF_SEPARATE),y) 734 9e414032SMasahiro YamadaALL-y += u-boot-dtb-tegra.bin 735 12b7b70cSAllen Martinelse 736 9e414032SMasahiro YamadaALL-y += u-boot-nodtb-tegra.bin 737 12b7b70cSAllen Martinendif 738 12b7b70cSAllen Martinendif 739 7dcd3a21SVidya Sagarendif 740 12b7b70cSAllen Martin 741 ad0fed46SMasahiro YamadaLDFLAGS_u-boot += $(LDFLAGS_FINAL) 742 433b2f1eSMasahiro Yamadaifneq ($(CONFIG_SYS_TEXT_BASE),) 743 433b2f1eSMasahiro YamadaLDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE) 744 433b2f1eSMasahiro Yamadaendif 745 71f84ef0SMasahiro Yamada 746 f9c235fdSMasahiro Yamadaquiet_cmd_objcopy = OBJCOPY $@ 747 f9c235fdSMasahiro Yamadacmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@ 748 f9c235fdSMasahiro Yamada 749 b97241b3SMarek Vasutquiet_cmd_mkimage = MKIMAGE $@ 750 9bf215b0SMasahiro Yamadacmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< $@ \ 751 9bf215b0SMasahiro Yamada $(if $(KBUILD_VERBOSE:1=), >/dev/null) 752 9bf215b0SMasahiro Yamada 753 ee0acfa2SMasahiro Yamadaquiet_cmd_cat = CAT $@ 754 ee0acfa2SMasahiro Yamadacmd_cat = cat $(filter-out $(PHONY), $^) > $@ 755 ee0acfa2SMasahiro Yamada 756 982a1199SMasahiro Yamadaappend = cat $(filter-out $< $(PHONY), $^) >> $@ 757 982a1199SMasahiro Yamada 758 982a1199SMasahiro Yamadaquiet_cmd_pad_cat = CAT $@ 759 982a1199SMasahiro Yamadacmd_pad_cat = $(cmd_objcopy) && $(append) || rm -f $@ 760 982a1199SMasahiro Yamada 761 656de6b8SMasahiro Yamadaall: $(ALL-y) 762 7ebf7443Swdenk 763 6ab6b2afSMasahiro YamadaPHONY += dtbs 764 6ab6b2afSMasahiro Yamadadtbs dts/dt.dtb: checkdtc u-boot 765 6ab6b2afSMasahiro Yamada $(Q)$(MAKE) $(build)=dts dtbs 766 2c0f79e4SSimon Glass 767 ee0acfa2SMasahiro Yamadau-boot-dtb.bin: u-boot.bin dts/dt.dtb FORCE 768 ee0acfa2SMasahiro Yamada $(call if_changed,cat) 769 2c0f79e4SSimon Glass 770 e64348f5SStefano Babic%.imx: %.bin 771 e64348f5SStefano Babic $(Q)$(MAKE) $(build)=arch/arm/imx-common $@ 772 e64348f5SStefano Babic 773 0d1e8aacSMasahiro Yamadaquiet_cmd_copy = COPY $@ 774 0d1e8aacSMasahiro Yamada cmd_copy = cp $< $@ 775 0d1e8aacSMasahiro Yamada 776 0d1e8aacSMasahiro Yamadau-boot.dtb: dts/dt.dtb 777 0d1e8aacSMasahiro Yamada $(call cmd,copy) 778 0d1e8aacSMasahiro Yamada 779 f9c235fdSMasahiro YamadaOBJCOPYFLAGS_u-boot.hex := -O ihex 780 6310eb9dSwdenk 781 f9c235fdSMasahiro YamadaOBJCOPYFLAGS_u-boot.srec := -O srec 782 7ebf7443Swdenk 783 f9c235fdSMasahiro Yamadau-boot.hex u-boot.srec: u-boot FORCE 784 f9c235fdSMasahiro Yamada $(call if_changed,objcopy) 785 f9c235fdSMasahiro Yamada 786 f9c235fdSMasahiro YamadaOBJCOPYFLAGS_u-boot.bin := -O binary 787 f9c235fdSMasahiro Yamada 788 89742924SSimon Glassbinary_size_check: u-boot.bin System.map FORCE 789 89742924SSimon Glass @file_size=`stat -c %s u-boot.bin` ; \ 790 89742924SSimon Glass map_size=$(shell cat System.map | \ 791 0b308f14SSimon Glass awk '/_image_copy_start/ {start = $$1} /_image_binary_end/ {end = $$1} END {if (start != "" && end != "") print "ibase=16; " toupper(end) " - " toupper(start)}' \ 792 0b308f14SSimon Glass | bc); \ 793 89742924SSimon Glass if [ "" != "$$map_size" ]; then \ 794 89742924SSimon Glass if test $$map_size -ne $$file_size; then \ 795 89742924SSimon Glass echo "System.map shows a binary size of $$map_size" >&2 ; \ 796 89742924SSimon Glass echo " but u-boot.bin shows $$file_size" >&2 ; \ 797 89742924SSimon Glass exit 1; \ 798 89742924SSimon Glass fi \ 799 89742924SSimon Glass fi 800 89742924SSimon Glass 801 f9c235fdSMasahiro Yamadau-boot.bin: u-boot FORCE 802 f9c235fdSMasahiro Yamada $(call if_changed,objcopy) 803 8137af19SScott Wood $(call DO_STATIC_RELA,$<,$@,$(CONFIG_SYS_TEXT_BASE)) 804 f3a14d37SMike Frysinger $(BOARD_SIZE_CHECK) 805 7ebf7443Swdenk 806 9e414032SMasahiro Yamadau-boot.ldr: u-boot 807 76d82187SMike Frysinger $(CREATE_LDR_ENV) 808 68e56324SMike Frysinger $(LDR) -T $(CONFIG_BFIN_CPU) -c $@ $< $(LDR_FLAGS) 809 f3a14d37SMike Frysinger $(BOARD_SIZE_CHECK) 810 94a91e24SMike Frysinger 811 f9c235fdSMasahiro YamadaOBJCOPYFLAGS_u-boot.ldr.hex := -I binary -O ihex 812 94a91e24SMike Frysinger 813 f9c235fdSMasahiro YamadaOBJCOPYFLAGS_u-boot.ldr.srec := -I binary -O srec 814 f9c235fdSMasahiro Yamada 815 f9c235fdSMasahiro Yamadau-boot.ldr.hex u-boot.ldr.srec: u-boot.ldr FORCE 816 f9c235fdSMasahiro Yamada $(call if_changed,objcopy) 817 94a91e24SMike Frysinger 818 b40bda6bSStefan Roese# 819 b40bda6bSStefan Roese# U-Boot entry point, needed for booting of full-blown U-Boot 820 b40bda6bSStefan Roese# from the SPL U-Boot version. 821 b40bda6bSStefan Roese# 822 b40bda6bSStefan Roeseifndef CONFIG_SYS_UBOOT_START 823 b40bda6bSStefan RoeseCONFIG_SYS_UBOOT_START := 0 824 b40bda6bSStefan Roeseendif 825 b40bda6bSStefan Roese 826 9bf215b0SMasahiro YamadaMKIMAGEFLAGS_u-boot.img = -A $(ARCH) -T firmware -C none -O u-boot \ 827 9bf215b0SMasahiro Yamada -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \ 828 9bf215b0SMasahiro Yamada -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board" 829 9bf215b0SMasahiro Yamada 830 4ab3fc5eSMasahiro YamadaMKIMAGEFLAGS_u-boot.kwb = -n $(srctree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%) \ 831 4ab3fc5eSMasahiro Yamada -T kwbimage -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) 832 9bf215b0SMasahiro Yamada 833 e4536f8eSMasahiro YamadaMKIMAGEFLAGS_u-boot.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \ 834 e4536f8eSMasahiro Yamada -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage 835 9bf215b0SMasahiro Yamada 836 d18926afSSimon Glassu-boot.img u-boot.kwb u-boot.pbl: u-boot.bin FORCE 837 9bf215b0SMasahiro Yamada $(call if_changed,mkimage) 838 bdccc4feSwdenk 839 2405d09cSMasahiro YamadaMKIMAGEFLAGS_u-boot-dtb.img = $(MKIMAGEFLAGS_u-boot.img) 840 2405d09cSMasahiro Yamada 841 2405d09cSMasahiro Yamadau-boot-dtb.img: u-boot-dtb.bin FORCE 842 2405d09cSMasahiro Yamada $(call if_changed,mkimage) 843 2405d09cSMasahiro Yamada 844 9e414032SMasahiro Yamadau-boot.sha1: u-boot.bin 845 9e414032SMasahiro Yamada tools/ubsha1 u-boot.bin 846 566a494fSHeiko Schocher 847 9e414032SMasahiro Yamadau-boot.dis: u-boot 848 7ebf7443Swdenk $(OBJDUMP) -d $< > $@ 849 7ebf7443Swdenk 850 3aa29de0SYing Zhangifdef CONFIG_TPL 851 9e414032SMasahiro YamadaSPL_PAYLOAD := tpl/u-boot-with-tpl.bin 852 3aa29de0SYing Zhangelse 853 9e414032SMasahiro YamadaSPL_PAYLOAD := u-boot.bin 854 3aa29de0SYing Zhangendif 855 74752baaSScott Wood 856 982a1199SMasahiro YamadaOBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \ 857 982a1199SMasahiro Yamada --pad-to=$(CONFIG_SPL_PAD_TO) 858 982a1199SMasahiro Yamadau-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE 859 982a1199SMasahiro Yamada $(call if_changed,pad_cat) 860 3aa29de0SYing Zhang 861 982a1199SMasahiro YamadaOBJCOPYFLAGS_u-boot-with-tpl.bin = -I binary -O binary \ 862 982a1199SMasahiro Yamada --pad-to=$(CONFIG_TPL_PAD_TO) 863 982a1199SMasahiro Yamadatpl/u-boot-with-tpl.bin: tpl/u-boot-tpl.bin u-boot.bin FORCE 864 982a1199SMasahiro Yamada $(call if_changed,pad_cat) 865 7816f2cfSHeiko Schocher 866 630d2345SMasahiro YamadaSPL: spl/u-boot-spl.bin FORCE 867 630d2345SMasahiro Yamada $(Q)$(MAKE) $(build)=arch/arm/imx-common $@ 868 630d2345SMasahiro Yamada 869 630d2345SMasahiro Yamadau-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL u-boot.bin FORCE 870 4e0c8abcSMasahiro Yamada $(Q)$(MAKE) $(build)=arch/arm/imx-common $@ 871 7d5a5c79SBenoît Thébaudeau 872 9bf215b0SMasahiro YamadaMKIMAGEFLAGS_u-boot.ubl = -n $(UBL_CONFIG) -T ublimage -e $(CONFIG_SYS_TEXT_BASE) 873 9bf215b0SMasahiro Yamada 874 9bf215b0SMasahiro Yamadau-boot.ubl: u-boot-with-spl.bin FORCE 875 9bf215b0SMasahiro Yamada $(call if_changed,mkimage) 876 277f00f5SJosé Miguel Gonçalves 877 982a1199SMasahiro YamadaMKIMAGEFLAGS_u-boot-spl.ais = -s -n $(if $(CONFIG_AIS_CONFIG_FILE), \ 878 982a1199SMasahiro Yamada $(srctree)/$(CONFIG_AIS_CONFIG_FILE:"%"=%),"/dev/null") \ 879 982a1199SMasahiro Yamada -T aisimage -e $(CONFIG_SPL_TEXT_BASE) 880 982a1199SMasahiro Yamadaspl/u-boot-spl.ais: spl/u-boot-spl.bin FORCE 881 982a1199SMasahiro Yamada $(call if_changed,mkimage) 882 d36d8859SChristian Riesch 883 532d5318SChristian RieschOBJCOPYFLAGS_u-boot.ais = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) 884 982a1199SMasahiro Yamadau-boot.ais: spl/u-boot-spl.ais u-boot.img FORCE 885 982a1199SMasahiro Yamada $(call if_changed,pad_cat) 886 a5453555SOtavio Salvador 887 1a9df13dSMarek Vasutu-boot-signed.sb: u-boot.bin spl/u-boot-spl.bin 888 1a9df13dSMarek Vasut $(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs u-boot-signed.sb 889 9e414032SMasahiro Yamadau-boot.sb: u-boot.bin spl/u-boot-spl.bin 890 07e27ce0SMasahiro Yamada $(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs u-boot.sb 891 30b9b932SMarek Vasut 892 94aebe6cSStefan Roese# On x600 (SPEAr600) U-Boot is appended to U-Boot SPL. 893 94aebe6cSStefan Roese# Both images are created using mkimage (crc etc), so that the ROM 894 94aebe6cSStefan Roese# bootloader can check its integrity. Padding needs to be done to the 895 94aebe6cSStefan Roese# SPL image (with mkimage header) and not the binary. Otherwise the resulting image 896 94aebe6cSStefan Roese# which is loaded/copied by the ROM bootloader to SRAM doesn't fit. 897 94aebe6cSStefan Roese# The resulting image containing both U-Boot images is called u-boot.spr 898 982a1199SMasahiro YamadaMKIMAGEFLAGS_u-boot-spl.img = -A $(ARCH) -T firmware -C none \ 899 982a1199SMasahiro Yamada -a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n XLOADER 900 982a1199SMasahiro Yamadaspl/u-boot-spl.img: spl/u-boot-spl.bin FORCE 901 982a1199SMasahiro Yamada $(call if_changed,mkimage) 902 982a1199SMasahiro Yamada 903 982a1199SMasahiro YamadaOBJCOPYFLAGS_u-boot.spr = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \ 904 982a1199SMasahiro Yamada --gap-fill=0xff 905 982a1199SMasahiro Yamadau-boot.spr: spl/u-boot-spl.img u-boot.img FORCE 906 982a1199SMasahiro Yamada $(call if_changed,pad_cat) 907 94aebe6cSStefan Roese 908 ef509b90SVitaly AndrianovMKIMAGEFLAGS_u-boot-spl.gph = -A $(ARCH) -T gpimage -C none \ 909 ef509b90SVitaly Andrianov -a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n SPL 910 ef509b90SVitaly Andrianovspl/u-boot-spl.gph: spl/u-boot-spl.bin FORCE 911 ef509b90SVitaly Andrianov $(call if_changed,mkimage) 912 ef509b90SVitaly Andrianov 913 ef509b90SVitaly AndrianovOBJCOPYFLAGS_u-boot-spi.gph = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \ 914 ef509b90SVitaly Andrianov --gap-fill=0 915 ef509b90SVitaly Andrianovu-boot-spi.gph: spl/u-boot-spl.gph u-boot.img FORCE 916 ef509b90SVitaly Andrianov $(call if_changed,pad_cat) 917 ef509b90SVitaly Andrianov 918 50827a59SIan Campbellifneq ($(CONFIG_SUNXI),) 919 50827a59SIan CampbellOBJCOPYFLAGS_u-boot-sunxi-with-spl.bin = -I binary -O binary \ 920 50827a59SIan Campbell --pad-to=$(CONFIG_SPL_PAD_TO) --gap-fill=0xff 921 50827a59SIan Campbellu-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.img FORCE 922 50827a59SIan Campbell $(call if_changed,pad_cat) 923 50827a59SIan Campbellendif 924 50827a59SIan Campbell 925 6d6c0baeSTom Warrenifneq ($(CONFIG_TEGRA),) 926 982a1199SMasahiro YamadaOBJCOPYFLAGS_u-boot-nodtb-tegra.bin = -O binary --pad-to=$(CONFIG_SYS_TEXT_BASE) 927 982a1199SMasahiro Yamadau-boot-nodtb-tegra.bin: spl/u-boot-spl u-boot.bin FORCE 928 982a1199SMasahiro Yamada $(call if_changed,pad_cat) 929 9972db5cSStephen Warren 930 9972db5cSStephen Warrenifeq ($(CONFIG_OF_SEPARATE),y) 931 ee0acfa2SMasahiro Yamadau-boot-dtb-tegra.bin: u-boot-nodtb-tegra.bin dts/dt.dtb FORCE 932 ee0acfa2SMasahiro Yamada $(call if_changed,cat) 933 9972db5cSStephen Warrenendif 934 984df4ecSAllen Martinendif 935 984df4ecSAllen Martin 936 ee0acfa2SMasahiro Yamadau-boot-img.bin: spl/u-boot-spl.bin u-boot.img FORCE 937 ee0acfa2SMasahiro Yamada $(call if_changed,cat) 938 fb3d2b8aSStefan Roese 939 89ad7be8SPrabhakar Kushwaha#Add a target to create boot binary having SPL binary in PBI format 940 89ad7be8SPrabhakar Kushwaha#concatenated with u-boot binary. It is need by PowerPC SoC having 941 89ad7be8SPrabhakar Kushwaha#internal SRAM <= 512KB. 942 89ad7be8SPrabhakar KushwahaMKIMAGEFLAGS_u-boot-spl.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \ 943 89ad7be8SPrabhakar Kushwaha -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage 944 89ad7be8SPrabhakar Kushwaha 945 89ad7be8SPrabhakar Kushwahaspl/u-boot-spl.pbl: spl/u-boot-spl.bin FORCE 946 89ad7be8SPrabhakar Kushwaha $(call if_changed,mkimage) 947 89ad7be8SPrabhakar Kushwaha 948 89ad7be8SPrabhakar KushwahaOBJCOPYFLAGS_u-boot-with-spl-pbl.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \ 949 89ad7be8SPrabhakar Kushwaha --gap-fill=0xff 950 89ad7be8SPrabhakar Kushwaha 951 89ad7be8SPrabhakar Kushwahau-boot-with-spl-pbl.bin: spl/u-boot-spl.pbl u-boot.bin FORCE 952 89ad7be8SPrabhakar Kushwaha $(call if_changed,pad_cat) 953 89ad7be8SPrabhakar Kushwaha 954 ecddccd0SStefan Roese# PPC4xx needs the SPL at the end of the image, since the reset vector 955 ecddccd0SStefan Roese# is located at 0xfffffffc. So we can't use the "u-boot-img.bin" target 956 ecddccd0SStefan Roese# and need to introduce a new build target with the full blown U-Boot 957 ecddccd0SStefan Roese# at the start padded up to the start of the SPL image. And then concat 958 ecddccd0SStefan Roese# the SPL image to the end. 959 982a1199SMasahiro Yamada 960 982a1199SMasahiro YamadaOBJCOPYFLAGS_u-boot-img-spl-at-end.bin := -I binary -O binary \ 961 982a1199SMasahiro Yamada --pad-to=$(CONFIG_UBOOT_PAD_TO) --gap-fill=0xff 962 982a1199SMasahiro Yamadau-boot-img-spl-at-end.bin: u-boot.img spl/u-boot-spl.bin FORCE 963 982a1199SMasahiro Yamada $(call if_changed,pad_cat) 964 ecddccd0SStefan Roese 965 f4dc714aSScott Wood# Create a new ELF from a raw binary file. This is useful for arm64 966 f4dc714aSScott Wood# where static relocation needs to be performed on the raw binary, 967 f4dc714aSScott Wood# but certain simulators only accept an ELF file (but don't do the 968 f4dc714aSScott Wood# relocation). 969 f4dc714aSScott Wood# FIXME refactor dts/Makefile to share target/arch detection 970 9e414032SMasahiro Yamadau-boot.elf: u-boot.bin 971 f4dc714aSScott Wood @$(OBJCOPY) -B aarch64 -I binary -O elf64-littleaarch64 \ 972 9e414032SMasahiro Yamada $< u-boot-elf.o 973 9e414032SMasahiro Yamada @$(LD) u-boot-elf.o -o $@ \ 974 f4dc714aSScott Wood --defsym=_start=$(CONFIG_SYS_TEXT_BASE) \ 975 f4dc714aSScott Wood -Ttext=$(CONFIG_SYS_TEXT_BASE) 976 f4dc714aSScott Wood 977 ad0fed46SMasahiro Yamada# Rule to link u-boot 978 ad0fed46SMasahiro Yamada# May be overridden by arch/$(ARCH)/config.mk 979 ad0fed46SMasahiro Yamadaquiet_cmd_u-boot__ ?= LD $@ 980 ad0fed46SMasahiro Yamada cmd_u-boot__ ?= $(LD) $(LDFLAGS) $(LDFLAGS_u-boot) -o $@ \ 981 ad0fed46SMasahiro Yamada -T u-boot.lds $(u-boot-init) \ 982 ad0fed46SMasahiro Yamada --start-group $(u-boot-main) --end-group \ 983 ad0fed46SMasahiro Yamada $(PLATFORM_LIBS) -Map u-boot.map 984 86eb49b3SSimon Glass 985 656de6b8SMasahiro Yamadau-boot: $(u-boot-init) $(u-boot-main) u-boot.lds 986 ad0fed46SMasahiro Yamada $(call if_changed,u-boot__) 987 ecb1dc89SMike Frysingerifeq ($(CONFIG_KALLSYMS),y) 988 9e414032SMasahiro Yamada smap=`$(call SYSTEM_MAP,u-boot) | \ 989 1aada9cdSWolfgang Denk awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \ 990 6825a95bSMasahiro Yamada $(CC) $(c_flags) -DSYSTEM_MAP="\"$${smap}\"" \ 991 9e414032SMasahiro Yamada -c $(srctree)/common/system_map.c -o common/system_map.o 992 ad0fed46SMasahiro Yamada $(call cmd,u-boot__) common/system_map.o 993 ecb1dc89SMike Frysingerendif 994 7ebf7443Swdenk 995 656de6b8SMasahiro Yamada# The actual objects are generated when descending, 996 656de6b8SMasahiro Yamada# make sure no implicit rule kicks in 997 656de6b8SMasahiro Yamada$(sort $(u-boot-init) $(u-boot-main)): $(u-boot-dirs) ; 998 f9328639SMarian Balakowicz 999 656de6b8SMasahiro Yamada# Handle descending into subdirectories listed in $(vmlinux-dirs) 1000 656de6b8SMasahiro Yamada# Preset locale variables to speed up the build process. Limit locale 1001 656de6b8SMasahiro Yamada# tweaks to this spot to avoid wrong language settings when running 1002 656de6b8SMasahiro Yamada# make menuconfig etc. 1003 656de6b8SMasahiro Yamada# Error messages still appears in the original language 1004 a8c7c708Swdenk 1005 656de6b8SMasahiro YamadaPHONY += $(u-boot-dirs) 1006 6378008aSMasahiro Yamada$(u-boot-dirs): prepare scripts 1007 6825a95bSMasahiro Yamada $(Q)$(MAKE) $(build)=$@ 1008 940db16dSMasahiro Yamada 1009 7424145fSMasahiro Yamadatools: prepare 1010 656de6b8SMasahiro Yamada# The "tools" are needed early 1011 656de6b8SMasahiro Yamada$(filter-out tools, $(u-boot-dirs)): tools 1012 656de6b8SMasahiro Yamada# The "examples" conditionally depend on U-Boot (say, when USE_PRIVATE_LIBGCC 1013 656de6b8SMasahiro Yamada# is "yes"), so compile examples after U-Boot is compiled. 1014 656de6b8SMasahiro Yamadaexamples: $(filter-out examples, $(u-boot-dirs)) 1015 656de6b8SMasahiro Yamada 1016 7424145fSMasahiro Yamadadefine filechk_uboot.release 1017 7424145fSMasahiro Yamada echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))" 1018 7424145fSMasahiro Yamadaendef 1019 7424145fSMasahiro Yamada 1020 7424145fSMasahiro Yamada# Store (new) UBOOTRELEASE string in include/config/uboot.release 1021 7424145fSMasahiro Yamadainclude/config/uboot.release: Makefile FORCE 1022 7424145fSMasahiro Yamada $(call filechk,uboot.release) 1023 7424145fSMasahiro Yamada 1024 7424145fSMasahiro Yamada 1025 3341bfecSMasahiro Yamada# Things we need to do before we recursively start building the kernel 1026 3341bfecSMasahiro Yamada# or the modules are listed in "prepare". 1027 3341bfecSMasahiro Yamada# A multi level approach is used. prepareN is processed before prepareN-1. 1028 3341bfecSMasahiro Yamada# archprepare is used in arch Makefiles and when processed asm symlink, 1029 3341bfecSMasahiro Yamada# version.h and scripts_basic is processed / created. 1030 3341bfecSMasahiro Yamada 1031 3341bfecSMasahiro Yamada# Listed in dependency order 1032 3341bfecSMasahiro YamadaPHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3 1033 3341bfecSMasahiro Yamada 1034 3341bfecSMasahiro Yamada# prepare3 is used to check if we are building in a separate output directory, 1035 3341bfecSMasahiro Yamada# and if so do: 1036 3341bfecSMasahiro Yamada# 1) Check that make has not been executed in the kernel src $(srctree) 1037 7424145fSMasahiro Yamadaprepare3: include/config/uboot.release 1038 3341bfecSMasahiro Yamadaifneq ($(KBUILD_SRC),) 1039 3341bfecSMasahiro Yamada @$(kecho) ' Using $(srctree) as source for u-boot' 1040 3341bfecSMasahiro Yamada $(Q)if [ -f $(srctree)/include/config.mk ]; then \ 1041 3341bfecSMasahiro Yamada echo >&2 " $(srctree) is not clean, please run 'make mrproper'"; \ 1042 3341bfecSMasahiro Yamada echo >&2 " in the '$(srctree)' directory.";\ 1043 3341bfecSMasahiro Yamada /bin/false; \ 1044 3341bfecSMasahiro Yamada fi; 1045 3341bfecSMasahiro Yamadaendif 1046 3341bfecSMasahiro Yamada 1047 3341bfecSMasahiro Yamada# prepare2 creates a makefile if using a separate output directory 1048 3341bfecSMasahiro Yamadaprepare2: prepare3 outputmakefile 1049 3341bfecSMasahiro Yamada 1050 7424145fSMasahiro Yamadaprepare1: prepare2 $(version_h) $(timestamp_h) 1051 331b45fbSMasahiro Yamadaifeq ($(__HAVE_ARCH_GENERIC_BOARD),) 1052 331b45fbSMasahiro Yamadaifeq ($(CONFIG_SYS_GENERIC_BOARD),y) 1053 331b45fbSMasahiro Yamada @echo >&2 " Your architecture does not support generic board." 1054 331b45fbSMasahiro Yamada @echo >&2 " Please undefine CONFIG_SYS_GENERIC_BOARD in your board config file." 1055 331b45fbSMasahiro Yamada @/bin/false 1056 331b45fbSMasahiro Yamadaendif 1057 331b45fbSMasahiro Yamadaendif 1058 4a377552SMasahiro Yamadaifeq ($(wildcard $(LDSCRIPT)),) 1059 4a377552SMasahiro Yamada @echo >&2 " Could not find linker script." 1060 4a377552SMasahiro Yamada @/bin/false 1061 4a377552SMasahiro Yamadaendif 1062 7ebf7443Swdenk 1063 3341bfecSMasahiro Yamadaarchprepare: prepare1 scripts_basic 1064 a8c7c708Swdenk 1065 6a44d806SMasahiro Yamadaprepare0: archprepare FORCE 1066 6a44d806SMasahiro Yamada $(Q)$(MAKE) $(build)=. 1067 7ebf7443Swdenk 1068 3341bfecSMasahiro Yamada# All the preparing.. 1069 3341bfecSMasahiro Yamadaprepare: prepare0 1070 349e83f0SChe-liang Chiou 1071 7424145fSMasahiro Yamada# Generate some files 1072 7424145fSMasahiro Yamada# --------------------------------------------------------------------------- 1073 7424145fSMasahiro Yamada 1074 7424145fSMasahiro Yamadadefine filechk_version.h 1075 7424145fSMasahiro Yamada (echo \#define PLAIN_VERSION \"$(UBOOTRELEASE)\"; \ 1076 7424145fSMasahiro Yamada echo \#define U_BOOT_VERSION \"U-Boot \" PLAIN_VERSION; \ 1077 7424145fSMasahiro Yamada echo \#define CC_VERSION_STRING \"$$($(CC) --version | head -n 1)\"; \ 1078 7424145fSMasahiro Yamada echo \#define LD_VERSION_STRING \"$$($(LD) --version | head -n 1)\"; ) 1079 7424145fSMasahiro Yamadaendef 1080 7424145fSMasahiro Yamada 1081 7424145fSMasahiro Yamadadefine filechk_timestamp.h 1082 7424145fSMasahiro Yamada (LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; \ 1083 7424145fSMasahiro Yamada LC_ALL=C date +'#define U_BOOT_TIME "%T"') 1084 7424145fSMasahiro Yamadaendef 1085 7424145fSMasahiro Yamada 1086 2e6b2f6aSMasahiro Yamada$(version_h): include/config/uboot.release FORCE 1087 7424145fSMasahiro Yamada $(call filechk,version.h) 1088 7424145fSMasahiro Yamada 1089 7424145fSMasahiro Yamada$(timestamp_h): $(srctree)/Makefile FORCE 1090 7424145fSMasahiro Yamada $(call filechk,timestamp.h) 1091 7424145fSMasahiro Yamada 1092 433b2f1eSMasahiro Yamada# 1093 433b2f1eSMasahiro Yamada# Auto-generate the autoconf.mk file (which is included by all makefiles) 1094 433b2f1eSMasahiro Yamada# 1095 433b2f1eSMasahiro Yamada# This target actually generates 2 files; autoconf.mk and autoconf.mk.dep. 1096 433b2f1eSMasahiro Yamada# the dep file is only include in this top level makefile to determine when 1097 433b2f1eSMasahiro Yamada# to regenerate the autoconf.mk file. 1098 1aada9cdSWolfgang Denk 1099 433b2f1eSMasahiro Yamadaquiet_cmd_autoconf_dep = GEN $@ 1100 433b2f1eSMasahiro Yamada cmd_autoconf_dep = $(CC) -x c -DDO_DEPS_ONLY -M $(c_flags) \ 1101 433b2f1eSMasahiro Yamada -MQ include/autoconf.mk $(srctree)/include/common.h > $@ || rm $@ 1102 887e2ec9SStefan Roese 1103 433b2f1eSMasahiro Yamadainclude/autoconf.mk.dep: include/config.h include/common.h 1104 433b2f1eSMasahiro Yamada $(call cmd,autoconf_dep) 1105 887e2ec9SStefan Roese 1106 433b2f1eSMasahiro Yamadaquiet_cmd_autoconf = GEN $@ 1107 433b2f1eSMasahiro Yamada cmd_autoconf = \ 1108 433b2f1eSMasahiro Yamada $(CPP) $(c_flags) -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && \ 1109 433b2f1eSMasahiro Yamada sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp > $@; \ 1110 433b2f1eSMasahiro Yamada rm $@.tmp 1111 5df2ee27SDaniel Schwierzeck 1112 433b2f1eSMasahiro Yamadainclude/autoconf.mk: include/config.h 1113 433b2f1eSMasahiro Yamada $(call cmd,autoconf) 1114 433b2f1eSMasahiro Yamada 1115 6378008aSMasahiro Yamada# --------------------------------------------------------------------------- 1116 6378008aSMasahiro Yamada 1117 6378008aSMasahiro YamadaPHONY += depend dep 1118 6378008aSMasahiro Yamadadepend dep: 1119 6378008aSMasahiro Yamada @echo '*** Warning: make $@ is unnecessary now.' 1120 6378008aSMasahiro Yamada 1121 6378008aSMasahiro Yamada# --------------------------------------------------------------------------- 1122 04a34c96SMasahiro Yamadaquiet_cmd_cpp_lds = LDS $@ 1123 395e60cdSMasahiro Yamadacmd_cpp_lds = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) -ansi \ 1124 395e60cdSMasahiro Yamada -D__ASSEMBLY__ -x assembler-with-cpp -P -o $@ $< 1125 6378008aSMasahiro Yamada 1126 04a34c96SMasahiro Yamadau-boot.lds: $(LDSCRIPT) prepare FORCE 1127 395e60cdSMasahiro Yamada $(call if_changed_dep,cpp_lds) 1128 f2302d44SStefan Roese 1129 982a1199SMasahiro Yamadaspl/u-boot-spl.bin: spl/u-boot-spl 1130 982a1199SMasahiro Yamada @: 1131 982a1199SMasahiro Yamadaspl/u-boot-spl: tools prepare 1132 c7163083SMasahiro Yamada $(Q)$(MAKE) obj=spl -f $(srctree)/scripts/Makefile.spl all 1133 0d3c62e4SChander Kashyap 1134 50827a59SIan Campbellspl/sunxi-spl.bin: spl/u-boot-spl 1135 50827a59SIan Campbell @: 1136 50827a59SIan Campbell 1137 6378008aSMasahiro Yamadatpl/u-boot-tpl.bin: tools prepare 1138 c7163083SMasahiro Yamada $(Q)$(MAKE) obj=tpl -f $(srctree)/scripts/Makefile.spl all CONFIG_TPL_BUILD=y 1139 3aa29de0SYing Zhang 1140 656de6b8SMasahiro YamadaTAG_SUBDIRS := $(u-boot-dirs) include 1141 a340c325SJean-Christophe PLAGNIOL-VILLARD 1142 857d9ea6SHorst KronstorferFIND := find 1143 857d9ea6SHorst KronstorferFINDFLAGS := -L 1144 857d9ea6SHorst Kronstorfer 1145 f9328639SMarian Balakowicztags ctags: 1146 9e414032SMasahiro Yamada ctags -w -o ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \ 1147 e5e4e705SLi Yang -name '*.[chS]' -print` 1148 7ebf7443Swdenk 1149 7ebf7443Swdenketags: 1150 857d9ea6SHorst Kronstorfer etags -a -o $(obj)etags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \ 1151 e5e4e705SLi Yang -name '*.[chS]' -print` 1152 ffda586fSLi Yangcscope: 1153 857d9ea6SHorst Kronstorfer $(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \ 1154 857d9ea6SHorst Kronstorfer cscope.files 1155 ffda586fSLi Yang cscope -b -q -k 1156 7ebf7443Swdenk 1157 ecb1dc89SMike FrysingerSYSTEM_MAP = \ 1158 ecb1dc89SMike Frysinger $(NM) $1 | \ 1159 7ebf7443Swdenk grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \ 1160 ecb1dc89SMike Frysinger LC_ALL=C sort 1161 9e414032SMasahiro YamadaSystem.map: u-boot 1162 bc8bb6ecSMasahiro Yamada @$(call SYSTEM_MAP,$<) > $@ 1163 7ebf7443Swdenk 1164 501ebdf2SStephen Warrencheckdtc: 1165 501ebdf2SStephen Warren @if test $(call dtc-version) -lt 0104; then \ 1166 501ebdf2SStephen Warren echo '*** Your dtc is too old, please upgrade to dtc 1.4 or newer'; \ 1167 501ebdf2SStephen Warren false; \ 1168 501ebdf2SStephen Warren fi 1169 501ebdf2SStephen Warren 1170 7ebf7443Swdenk######################################################################### 1171 7ebf7443Swdenk 1172 54799e45SScott Wood# ARM relocations should all be R_ARM_RELATIVE (32-bit) or 1173 54799e45SScott Wood# R_AARCH64_RELATIVE (64-bit). 1174 9e414032SMasahiro Yamadacheckarmreloc: u-boot 1175 54799e45SScott Wood @RELOC="`$(CROSS_COMPILE)readelf -r -W $< | cut -d ' ' -f 4 | \ 1176 54799e45SScott Wood grep R_A | sort -u`"; \ 1177 54799e45SScott Wood if test "$$RELOC" != "R_ARM_RELATIVE" -a \ 1178 54799e45SScott Wood "$$RELOC" != "R_AARCH64_RELATIVE"; then \ 1179 54799e45SScott Wood echo "$< contains unexpected relocations: $$RELOC"; \ 1180 54799e45SScott Wood false; \ 1181 54799e45SScott Wood fi 1182 c37980c3SAlbert ARIBAUD 1183 7424145fSMasahiro Yamadaenv: scripts_basic 1184 3f76e984SMasahiro Yamada $(Q)$(MAKE) $(build)=tools/$@ 1185 0358df42SMike Frysinger 1186 4642e002SMasahiro Yamadatools-only: scripts_basic $(version_h) $(timestamp_h) 1187 4642e002SMasahiro Yamada $(Q)$(MAKE) $(build)=tools 1188 4642e002SMasahiro Yamada 1189 1ec8b4efSMasahiro Yamadatools-all: export HOST_TOOLS_ALL=y 1190 2887c473SMasahiro Yamadatools-all: env tools ; 1191 0358df42SMike Frysinger 1192 db5b339cSMasahiro Yamadacross_tools: export CROSS_BUILD_TOOLS=y 1193 db5b339cSMasahiro Yamadacross_tools: tools ; 1194 db5b339cSMasahiro Yamada 1195 4e53a258SWolfgang Denk.PHONY : CHANGELOG 1196 4e53a258SWolfgang DenkCHANGELOG: 1197 b985b5d6SBen Warren git log --no-merges U-Boot-1_1_5.. | \ 1198 b985b5d6SBen Warren unexpand -a | sed -e 's/\s\s*$$//' > $@ 1199 4e53a258SWolfgang Denk 1200 0a823aa2SHarald Welteinclude/license.h: tools/bin2header COPYING 1201 0a823aa2SHarald Welte cat COPYING | gzip -9 -c | ./tools/bin2header license_gzip > include/license.h 1202 7ebf7443Swdenk######################################################################### 1203 7ebf7443Swdenk 1204 efcf8619SMasahiro Yamada### 1205 efcf8619SMasahiro Yamada# Cleaning is done on three levels. 1206 efcf8619SMasahiro Yamada# make clean Delete most generated files 1207 efcf8619SMasahiro Yamada# Leave enough to build external modules 1208 efcf8619SMasahiro Yamada# make mrproper Delete the current configuration, and all generated files 1209 efcf8619SMasahiro Yamada# make distclean Remove editor backup files, patch leftover files and the like 1210 7ebf7443Swdenk 1211 efcf8619SMasahiro Yamada# Directories & files removed with 'make clean' 1212 efcf8619SMasahiro YamadaCLEAN_DIRS += $(MODVERDIR) 1213 efcf8619SMasahiro YamadaCLEAN_FILES += u-boot.lds include/bmp_logo.h include/bmp_logo_data.h \ 1214 efcf8619SMasahiro Yamada include/autoconf.mk* include/spl-autoconf.mk \ 1215 433b2f1eSMasahiro Yamada include/tpl-autoconf.mk 1216 a6862bc1SWolfgang Denk 1217 efcf8619SMasahiro Yamada# Directories & files removed with 'make clobber' 1218 c7163083SMasahiro YamadaCLOBBER_DIRS += spl tpl 1219 66948c25SMasahiro YamadaCLOBBER_FILES += u-boot* MLO* SPL System.map 1220 9f4a4206SMike Frysinger 1221 efcf8619SMasahiro Yamada# Directories & files removed with 'make mrproper' 1222 598e2d33SMasahiro YamadaMRPROPER_DIRS += include/config include/generated \ 1223 598e2d33SMasahiro Yamada .tmp_objdiff 1224 efcf8619SMasahiro YamadaMRPROPER_FILES += .config .config.old \ 1225 efcf8619SMasahiro Yamada tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \ 1226 efcf8619SMasahiro Yamada include/config.h include/config.mk 1227 7ebf7443Swdenk 1228 efcf8619SMasahiro Yamada# clean - Delete most, but leave enough to build external modules 1229 efcf8619SMasahiro Yamada# 1230 efcf8619SMasahiro Yamadaclean: rm-dirs := $(CLEAN_DIRS) 1231 efcf8619SMasahiro Yamadaclean: rm-files := $(CLEAN_FILES) 1232 7ebf7443Swdenk 1233 6bd04bb4SMasahiro Yamadaclean-dirs := $(foreach f,$(u-boot-alldirs),$(if $(wildcard $(srctree)/$f/Makefile),$f)) 1234 734329f9SAndy Fleming 1235 efcf8619SMasahiro Yamadaclean-dirs := $(addprefix _clean_, $(clean-dirs) doc/DocBook) 1236 7ebf7443Swdenk 1237 efcf8619SMasahiro YamadaPHONY += $(clean-dirs) clean archclean 1238 efcf8619SMasahiro Yamada$(clean-dirs): 1239 efcf8619SMasahiro Yamada $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@) 1240 efcf8619SMasahiro Yamada 1241 efcf8619SMasahiro Yamada# TODO: Do not use *.cfgtmp 1242 efcf8619SMasahiro Yamadaclean: $(clean-dirs) 1243 efcf8619SMasahiro Yamada $(call cmd,rmdirs) 1244 efcf8619SMasahiro Yamada $(call cmd,rmfiles) 1245 efcf8619SMasahiro Yamada @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \ 1246 efcf8619SMasahiro Yamada \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \ 1247 efcf8619SMasahiro Yamada -o -name '*.ko.*' -o -name '*.su' -o -name '*.cfgtmp' \ 1248 efcf8619SMasahiro Yamada -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \ 1249 efcf8619SMasahiro Yamada -o -name '*.symtypes' -o -name 'modules.order' \ 1250 efcf8619SMasahiro Yamada -o -name modules.builtin -o -name '.tmp_*.o.*' \ 1251 efcf8619SMasahiro Yamada -o -name '*.gcno' \) -type f -print | xargs rm -f 1252 efcf8619SMasahiro Yamada 1253 efcf8619SMasahiro Yamada# clobber 1254 efcf8619SMasahiro Yamada# 1255 efcf8619SMasahiro Yamadaclobber: rm-dirs := $(CLOBBER_DIRS) 1256 efcf8619SMasahiro Yamadaclobber: rm-files := $(CLOBBER_FILES) 1257 efcf8619SMasahiro Yamada 1258 efcf8619SMasahiro YamadaPHONY += clobber 1259 efcf8619SMasahiro Yamada 1260 efcf8619SMasahiro Yamadaclobber: clean 1261 efcf8619SMasahiro Yamada $(call cmd,rmdirs) 1262 efcf8619SMasahiro Yamada $(call cmd,rmfiles) 1263 efcf8619SMasahiro Yamada 1264 efcf8619SMasahiro Yamada# mrproper - Delete all generated files, including .config 1265 efcf8619SMasahiro Yamada# 1266 efcf8619SMasahiro Yamadamrproper: rm-dirs := $(wildcard $(MRPROPER_DIRS)) 1267 efcf8619SMasahiro Yamadamrproper: rm-files := $(wildcard $(MRPROPER_FILES)) 1268 efcf8619SMasahiro Yamadamrproper-dirs := $(addprefix _mrproper_,scripts) 1269 efcf8619SMasahiro Yamada 1270 efcf8619SMasahiro YamadaPHONY += $(mrproper-dirs) mrproper archmrproper 1271 efcf8619SMasahiro Yamada$(mrproper-dirs): 1272 efcf8619SMasahiro Yamada $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@) 1273 efcf8619SMasahiro Yamada 1274 efcf8619SMasahiro Yamadamrproper: clobber $(mrproper-dirs) 1275 efcf8619SMasahiro Yamada $(call cmd,rmdirs) 1276 efcf8619SMasahiro Yamada $(call cmd,rmfiles) 1277 *e9c16a80SMasahiro Yamada @rm -f arch/*/include/asm/arch 1278 efcf8619SMasahiro Yamada 1279 efcf8619SMasahiro Yamada# distclean 1280 efcf8619SMasahiro Yamada# 1281 efcf8619SMasahiro YamadaPHONY += distclean 1282 efcf8619SMasahiro Yamada 1283 433b2f1eSMasahiro Yamadadistclean: mrproper 1284 efcf8619SMasahiro Yamada @find $(srctree) $(RCS_FIND_IGNORE) \ 1285 efcf8619SMasahiro Yamada \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ 1286 efcf8619SMasahiro Yamada -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ 1287 598e2d33SMasahiro Yamada -o -name '.*.rej' -o -name '*%' -o -name 'core' \ 1288 598e2d33SMasahiro Yamada -o -name '*.pyc' \) \ 1289 efcf8619SMasahiro Yamada -type f -print | xargs rm -f 1290 7ebf7443Swdenk 1291 7ebf7443Swdenkbackup: 1292 4379ac61SMasahiro Yamada F=`basename $(srctree)` ; cd .. ; \ 1293 d6b93714SIlya Yanok gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F 1294 7ebf7443Swdenk 1295 ed1ca528SMasahiro Yamadahelp: 1296 ed1ca528SMasahiro Yamada @echo 'Cleaning targets:' 1297 ed1ca528SMasahiro Yamada @echo ' clean - Remove most generated files but keep the config and' 1298 ed1ca528SMasahiro Yamada @echo ' necessities for testing u-boot' 1299 ed1ca528SMasahiro Yamada @echo ' clobber - Remove most generated files but keep the config' 1300 ed1ca528SMasahiro Yamada @echo ' mrproper - Remove all generated files + config + various backup files' 1301 ed1ca528SMasahiro Yamada @echo ' distclean - mrproper + remove editor backup and patch files' 1302 ed1ca528SMasahiro Yamada @echo '' 1303 ed1ca528SMasahiro Yamada# uncomment after adding Kconfig feature 1304 ed1ca528SMasahiro Yamada# @echo 'Configuration targets:' 1305 ed1ca528SMasahiro Yamada# @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help 1306 ed1ca528SMasahiro Yamada# @echo '' 1307 ed1ca528SMasahiro Yamada @echo 'Other generic targets:' 1308 ed1ca528SMasahiro Yamada @echo ' all - Build all necessary images depending on configuration' 1309 ed1ca528SMasahiro Yamada @echo ' u-boot - Build the bare u-boot' 1310 ed1ca528SMasahiro Yamada @echo ' dir/ - Build all files in dir and below' 1311 ed1ca528SMasahiro Yamada @echo ' dir/file.[oisS] - Build specified target only' 1312 ed1ca528SMasahiro Yamada @echo ' dir/file.lst - Build specified mixed source/assembly target only' 1313 ed1ca528SMasahiro Yamada @echo ' (requires a recent binutils and recent build (System.map))' 1314 ed1ca528SMasahiro Yamada @echo ' tags/TAGS - Generate tags file for editors' 1315 ed1ca528SMasahiro Yamada @echo ' cscope - Generate cscope index' 1316 ed1ca528SMasahiro Yamada @echo ' ubootrelease - Output the release version string' 1317 ed1ca528SMasahiro Yamada @echo ' ubootversion - Output the version stored in Makefile' 1318 ed1ca528SMasahiro Yamada @echo '' 1319 ed1ca528SMasahiro Yamada @echo 'Static analysers' 1320 ed1ca528SMasahiro Yamada @echo ' checkstack - Generate a list of stack hogs' 1321 ed1ca528SMasahiro Yamada @echo '' 1322 ed1ca528SMasahiro Yamada @echo 'Documentation targets:' 1323 ed1ca528SMasahiro Yamada @$(MAKE) -f $(srctree)/doc/DocBook/Makefile dochelp 1324 ed1ca528SMasahiro Yamada @echo '' 1325 ed1ca528SMasahiro Yamada @echo ' make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build' 1326 ed1ca528SMasahiro Yamada @echo ' make V=2 [targets] 2 => give reason for rebuild of target' 1327 ed1ca528SMasahiro Yamada @echo ' make O=dir [targets] Locate all output files in "dir", including .config' 1328 ed1ca528SMasahiro Yamada @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)' 1329 ed1ca528SMasahiro Yamada @echo ' make C=2 [targets] Force check of all c source with $$CHECK' 1330 ed1ca528SMasahiro Yamada @echo ' make RECORDMCOUNT_WARN=1 [targets] Warn about ignored mcount sections' 1331 ed1ca528SMasahiro Yamada @echo ' make W=n [targets] Enable extra gcc checks, n=1,2,3 where' 1332 ed1ca528SMasahiro Yamada @echo ' 1: warnings which may be relevant and do not occur too often' 1333 ed1ca528SMasahiro Yamada @echo ' 2: warnings which occur quite often but may still be relevant' 1334 ed1ca528SMasahiro Yamada @echo ' 3: more obscure warnings, can most likely be ignored' 1335 ed1ca528SMasahiro Yamada @echo ' Multiple levels can be combined with W=12 or W=123' 1336 ed1ca528SMasahiro Yamada @echo '' 1337 ed1ca528SMasahiro Yamada @echo 'Execute "make" or "make all" to build all targets marked with [*] ' 1338 ed1ca528SMasahiro Yamada @echo 'For further info see the ./README file' 1339 ed1ca528SMasahiro Yamada 1340 8fac9c7bSMasahiro Yamada 1341 8fac9c7bSMasahiro Yamada# Documentation targets 1342 8fac9c7bSMasahiro Yamada# --------------------------------------------------------------------------- 1343 8fac9c7bSMasahiro Yamada%docs: scripts_basic FORCE 1344 8fac9c7bSMasahiro Yamada $(Q)$(MAKE) $(build)=scripts build_docproc 1345 8fac9c7bSMasahiro Yamada $(Q)$(MAKE) $(build)=doc/DocBook $@ 1346 8fac9c7bSMasahiro Yamada 1347 3341bfecSMasahiro Yamada# Dummies... 1348 3341bfecSMasahiro YamadaPHONY += prepare scripts 1349 3341bfecSMasahiro Yamadaprepare: ; 1350 3341bfecSMasahiro Yamadascripts: ; 1351 9e414032SMasahiro Yamada 1352 433b2f1eSMasahiro Yamadaendif #ifeq ($(config-targets),1) 1353 433b2f1eSMasahiro Yamadaendif #ifeq ($(mixed-targets),1) 1354 433b2f1eSMasahiro Yamada 1355 ed1ca528SMasahiro YamadaPHONY += checkstack ubootrelease ubootversion 1356 ed1ca528SMasahiro Yamada 1357 ed1ca528SMasahiro Yamadacheckstack: 1358 ed1ca528SMasahiro Yamada $(OBJDUMP) -d u-boot $$(find . -name u-boot-spl) | \ 1359 ed1ca528SMasahiro Yamada $(PERL) $(src)/scripts/checkstack.pl $(ARCH) 1360 ed1ca528SMasahiro Yamada 1361 ed1ca528SMasahiro Yamadaubootrelease: 1362 ed1ca528SMasahiro Yamada @echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))" 1363 ed1ca528SMasahiro Yamada 1364 ed1ca528SMasahiro Yamadaubootversion: 1365 ed1ca528SMasahiro Yamada @echo $(UBOOTVERSION) 1366 ed1ca528SMasahiro Yamada 1367 886d86e8SMasahiro Yamada# Single targets 1368 886d86e8SMasahiro Yamada# --------------------------------------------------------------------------- 1369 886d86e8SMasahiro Yamada# Single targets are compatible with: 1370 886d86e8SMasahiro Yamada# - build with mixed source and output 1371 886d86e8SMasahiro Yamada# - build with separate output dir 'make O=...' 1372 886d86e8SMasahiro Yamada# - external modules 1373 886d86e8SMasahiro Yamada# 1374 886d86e8SMasahiro Yamada# target-dir => where to store outputfile 1375 886d86e8SMasahiro Yamada# build-dir => directory in kernel source tree to use 1376 886d86e8SMasahiro Yamada 1377 886d86e8SMasahiro Yamadaifeq ($(KBUILD_EXTMOD),) 1378 886d86e8SMasahiro Yamada build-dir = $(patsubst %/,%,$(dir $@)) 1379 886d86e8SMasahiro Yamada target-dir = $(dir $@) 1380 886d86e8SMasahiro Yamadaelse 1381 886d86e8SMasahiro Yamada zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@))) 1382 886d86e8SMasahiro Yamada build-dir = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash)) 1383 886d86e8SMasahiro Yamada target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@)) 1384 886d86e8SMasahiro Yamadaendif 1385 886d86e8SMasahiro Yamada 1386 886d86e8SMasahiro Yamada%.s: %.c prepare scripts FORCE 1387 886d86e8SMasahiro Yamada $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1388 886d86e8SMasahiro Yamada%.i: %.c prepare scripts FORCE 1389 886d86e8SMasahiro Yamada $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1390 886d86e8SMasahiro Yamada%.o: %.c prepare scripts FORCE 1391 886d86e8SMasahiro Yamada $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1392 886d86e8SMasahiro Yamada%.lst: %.c prepare scripts FORCE 1393 886d86e8SMasahiro Yamada $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1394 886d86e8SMasahiro Yamada%.s: %.S prepare scripts FORCE 1395 886d86e8SMasahiro Yamada $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1396 886d86e8SMasahiro Yamada%.o: %.S prepare scripts FORCE 1397 886d86e8SMasahiro Yamada $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1398 886d86e8SMasahiro Yamada%.symtypes: %.c prepare scripts FORCE 1399 886d86e8SMasahiro Yamada $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1400 886d86e8SMasahiro Yamada 1401 886d86e8SMasahiro Yamada# Modules 1402 886d86e8SMasahiro Yamada/: prepare scripts FORCE 1403 886d86e8SMasahiro Yamada $(cmd_crmodverdir) 1404 886d86e8SMasahiro Yamada $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 1405 886d86e8SMasahiro Yamada $(build)=$(build-dir) 1406 886d86e8SMasahiro Yamada%/: prepare scripts FORCE 1407 886d86e8SMasahiro Yamada $(cmd_crmodverdir) 1408 886d86e8SMasahiro Yamada $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 1409 886d86e8SMasahiro Yamada $(build)=$(build-dir) 1410 886d86e8SMasahiro Yamada%.ko: prepare scripts FORCE 1411 886d86e8SMasahiro Yamada $(cmd_crmodverdir) 1412 886d86e8SMasahiro Yamada $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 1413 886d86e8SMasahiro Yamada $(build)=$(build-dir) $(@:.ko=.o) 1414 886d86e8SMasahiro Yamada $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost 1415 886d86e8SMasahiro Yamada 1416 886d86e8SMasahiro Yamada# FIXME Should go into a make.lib or something 1417 886d86e8SMasahiro Yamada# =========================================================================== 1418 886d86e8SMasahiro Yamada 1419 efcf8619SMasahiro Yamadaquiet_cmd_rmdirs = $(if $(wildcard $(rm-dirs)),CLEAN $(wildcard $(rm-dirs))) 1420 efcf8619SMasahiro Yamada cmd_rmdirs = rm -rf $(rm-dirs) 1421 efcf8619SMasahiro Yamada 1422 efcf8619SMasahiro Yamadaquiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files))) 1423 efcf8619SMasahiro Yamada cmd_rmfiles = rm -f $(rm-files) 1424 efcf8619SMasahiro Yamada 1425 f9c235fdSMasahiro Yamada# read all saved command lines 1426 f9c235fdSMasahiro Yamada 1427 f9c235fdSMasahiro Yamadatargets := $(wildcard $(sort $(targets))) 1428 f9c235fdSMasahiro Yamadacmd_files := $(wildcard .*.cmd $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd)) 1429 f9c235fdSMasahiro Yamada 1430 f9c235fdSMasahiro Yamadaifneq ($(cmd_files),) 1431 f9c235fdSMasahiro Yamada $(cmd_files): ; # Do not try to update included dependency files 1432 f9c235fdSMasahiro Yamada include $(cmd_files) 1433 f9c235fdSMasahiro Yamadaendif 1434 f9c235fdSMasahiro Yamada 1435 efcf8619SMasahiro Yamada# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj=dir 1436 efcf8619SMasahiro Yamada# Usage: 1437 efcf8619SMasahiro Yamada# $(Q)$(MAKE) $(clean)=dir 1438 efcf8619SMasahiro Yamadaclean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj 1439 efcf8619SMasahiro Yamada 1440 9e414032SMasahiro Yamadaendif # skip-makefile 1441 9e414032SMasahiro Yamada 1442 9e414032SMasahiro YamadaPHONY += FORCE 1443 9e414032SMasahiro YamadaFORCE: 1444 9e414032SMasahiro Yamada 1445 9e414032SMasahiro Yamada# Declare the contents of the .PHONY variable as phony. We keep that 1446 9e414032SMasahiro Yamada# information in a variable so we can use it in if_changed and friends. 1447 9e414032SMasahiro Yamada.PHONY: $(PHONY) 1448