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