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