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