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 433b2f1eSMasahiro Yamada# To make sure we do not include .config for any of the *config targets 396 433b2f1eSMasahiro Yamada# catch them early, and hand them over to scripts/kconfig/Makefile 397 433b2f1eSMasahiro Yamada# It is allowed to specify more targets when calling make, including 398 433b2f1eSMasahiro Yamada# mixing *config targets and build targets. 399 433b2f1eSMasahiro Yamada# For example 'make oldconfig all'. 400 433b2f1eSMasahiro Yamada# Detect when mixed targets is specified, and make a second invocation 401 433b2f1eSMasahiro Yamada# of make so .config is not included in this case either (for *config). 402 6825a95bSMasahiro Yamada 403 433b2f1eSMasahiro Yamadano-dot-config-targets := clean clobber mrproper distclean \ 404 433b2f1eSMasahiro Yamada cscope TAGS %tags help %docs check% coccicheck \ 405 433b2f1eSMasahiro Yamada backup 406 2b3c9d3dSMasahiro Yamada 407 433b2f1eSMasahiro Yamadaconfig-targets := 0 408 433b2f1eSMasahiro Yamadamixed-targets := 0 409 433b2f1eSMasahiro Yamadadot-config := 1 410 2b3c9d3dSMasahiro Yamada 411 433b2f1eSMasahiro Yamadaifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),) 412 433b2f1eSMasahiro Yamada ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),) 413 433b2f1eSMasahiro Yamada dot-config := 0 414 2b3c9d3dSMasahiro Yamada endif 415 2b3c9d3dSMasahiro Yamadaendif 416 2b3c9d3dSMasahiro Yamada 417 433b2f1eSMasahiro Yamadaifeq ($(KBUILD_EXTMOD),) 418 433b2f1eSMasahiro Yamada ifneq ($(filter config %config,$(MAKECMDGOALS)),) 419 433b2f1eSMasahiro Yamada config-targets := 1 420 433b2f1eSMasahiro Yamada ifneq ($(filter-out config %config,$(MAKECMDGOALS)),) 421 433b2f1eSMasahiro Yamada mixed-targets := 1 422 433b2f1eSMasahiro Yamada endif 423 433b2f1eSMasahiro Yamada endif 424 433b2f1eSMasahiro Yamadaendif 425 433b2f1eSMasahiro Yamada 426 433b2f1eSMasahiro Yamadaifeq ($(mixed-targets),1) 427 433b2f1eSMasahiro Yamada# =========================================================================== 428 433b2f1eSMasahiro Yamada# We're called with mixed targets (*config and build targets). 429 433b2f1eSMasahiro Yamada# Handle them one by one. 430 433b2f1eSMasahiro Yamada 431 433b2f1eSMasahiro Yamada%:: FORCE 432 433b2f1eSMasahiro Yamada $(Q)$(MAKE) -C $(srctree) KBUILD_SRC= $@ 433 433b2f1eSMasahiro Yamada 434 433b2f1eSMasahiro Yamadaelse 435 433b2f1eSMasahiro Yamadaifeq ($(config-targets),1) 436 433b2f1eSMasahiro Yamada# =========================================================================== 437 433b2f1eSMasahiro Yamada# *config targets only - make sure prerequisites are updated, and descend 438 433b2f1eSMasahiro Yamada# in scripts/kconfig to make the *config target 439 433b2f1eSMasahiro Yamada 440 433b2f1eSMasahiro Yamada# Read arch specific Makefile to set KBUILD_DEFCONFIG as needed. 441 433b2f1eSMasahiro Yamada# KBUILD_DEFCONFIG may point out an alternative default configuration 442 433b2f1eSMasahiro Yamada# used for 'make defconfig' 443 433b2f1eSMasahiro Yamada 444 433b2f1eSMasahiro Yamada%_config:: 445 433b2f1eSMasahiro Yamada @$(MKCONFIG) -A $(@:_config=) 446 433b2f1eSMasahiro Yamada 447 433b2f1eSMasahiro Yamadaelse 448 433b2f1eSMasahiro Yamada# =========================================================================== 449 433b2f1eSMasahiro Yamada# Build targets only - this includes vmlinux, arch specific targets, clean 450 433b2f1eSMasahiro Yamada# targets and others. In general all targets except *config targets. 451 433b2f1eSMasahiro Yamada 452 433b2f1eSMasahiro Yamada# load ARCH, BOARD, and CPU configuration 453 433b2f1eSMasahiro Yamada-include include/config.mk 454 433b2f1eSMasahiro Yamada 455 433b2f1eSMasahiro Yamadaifeq ($(dot-config),1) 456 433b2f1eSMasahiro Yamada# Read in config 457 433b2f1eSMasahiro Yamada-include include/autoconf.mk 458 433b2f1eSMasahiro Yamada-include include/autoconf.mk.dep 459 433b2f1eSMasahiro Yamada 460 92b197f0SWolfgang Denk# load other configuration 461 433b2f1eSMasahiro Yamadainclude $(srctree)/config.mk 462 92b197f0SWolfgang Denk 463 433b2f1eSMasahiro Yamadaifeq ($(wildcard include/config.mk),) 464 433b2f1eSMasahiro Yamada$(error "System not configured - see README") 465 ced0715dSMasahiro Yamadaendif 466 ced0715dSMasahiro Yamada 467 ced0715dSMasahiro Yamadaifeq ($(__HAVE_ARCH_GENERIC_BOARD),) 468 ced0715dSMasahiro Yamadaifneq ($(CONFIG_SYS_GENERIC_BOARD),) 469 433b2f1eSMasahiro Yamada$(error Your architecture does not support generic board. \ 470 ced0715dSMasahiro YamadaPlease undefined CONFIG_SYS_GENERIC_BOARD in your board config file) 471 ced0715dSMasahiro Yamadaendif 472 fada9e20SSimon Glassendif 473 6825a95bSMasahiro Yamada 474 d51dfff7SIlya Yanok# If board code explicitly specified LDSCRIPT or CONFIG_SYS_LDSCRIPT, use 475 d51dfff7SIlya Yanok# that (or fail if absent). Otherwise, search for a linker script in a 476 d51dfff7SIlya Yanok# standard location. 477 d51dfff7SIlya Yanok 478 ee60197eSSimon GlassLDSCRIPT_MAKEFILE_DIR = $(dir $(LDSCRIPT)) 479 ee60197eSSimon Glass 480 d51dfff7SIlya Yanokifndef LDSCRIPT 481 d51dfff7SIlya Yanok #LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds.debug 482 d51dfff7SIlya Yanok ifdef CONFIG_SYS_LDSCRIPT 483 d51dfff7SIlya Yanok # need to strip off double quotes 484 a8c07541SMasahiro Yamada LDSCRIPT := $(CONFIG_SYS_LDSCRIPT:"%"=%) 485 d51dfff7SIlya Yanok endif 486 d51dfff7SIlya Yanokendif 487 d51dfff7SIlya Yanok 488 ee60197eSSimon Glass# If there is no specified link script, we look in a number of places for it 489 d51dfff7SIlya Yanokifndef LDSCRIPT 490 d51dfff7SIlya Yanok ifeq ($(CONFIG_NAND_U_BOOT),y) 491 d51dfff7SIlya Yanok LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds 492 d51dfff7SIlya Yanok ifeq ($(wildcard $(LDSCRIPT)),) 493 d51dfff7SIlya Yanok LDSCRIPT := $(TOPDIR)/$(CPUDIR)/u-boot-nand.lds 494 d51dfff7SIlya Yanok endif 495 d51dfff7SIlya Yanok endif 496 d51dfff7SIlya Yanok ifeq ($(wildcard $(LDSCRIPT)),) 497 d51dfff7SIlya Yanok LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds 498 d51dfff7SIlya Yanok endif 499 d51dfff7SIlya Yanok ifeq ($(wildcard $(LDSCRIPT)),) 500 d51dfff7SIlya Yanok LDSCRIPT := $(TOPDIR)/$(CPUDIR)/u-boot.lds 501 d51dfff7SIlya Yanok endif 502 d51dfff7SIlya Yanok ifeq ($(wildcard $(LDSCRIPT)),) 503 ee60197eSSimon Glass LDSCRIPT := $(TOPDIR)/arch/$(ARCH)/cpu/u-boot.lds 504 ee60197eSSimon Glass # We don't expect a Makefile here 505 ee60197eSSimon Glass LDSCRIPT_MAKEFILE_DIR = 506 ee60197eSSimon Glass endif 507 ee60197eSSimon Glass ifeq ($(wildcard $(LDSCRIPT)),) 508 d51dfff7SIlya Yanok$(error could not find linker script) 509 d51dfff7SIlya Yanok endif 510 d51dfff7SIlya Yanokendif 511 d51dfff7SIlya Yanok 512 433b2f1eSMasahiro Yamadaelse 513 433b2f1eSMasahiro Yamada 514 433b2f1eSMasahiro Yamada 515 433b2f1eSMasahiro Yamadaendif # $(dot-config) 516 433b2f1eSMasahiro Yamada 517 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += -Os #-fomit-frame-pointer 518 433b2f1eSMasahiro Yamada 519 433b2f1eSMasahiro Yamadaifdef BUILD_TAG 520 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += -DBUILD_TAG='"$(BUILD_TAG)"' 521 433b2f1eSMasahiro Yamadaendif 522 433b2f1eSMasahiro Yamada 523 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += $(call cc-option,-fno-stack-protector) 524 433b2f1eSMasahiro Yamada 525 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += -g 526 433b2f1eSMasahiro Yamada# $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g<format> 527 433b2f1eSMasahiro Yamada# option to the assembler. 528 433b2f1eSMasahiro YamadaKBUILD_AFLAGS += -g 529 433b2f1eSMasahiro Yamada 530 433b2f1eSMasahiro Yamada# Report stack usage if supported 531 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += $(call cc-option,-fstack-usage) 532 433b2f1eSMasahiro Yamada 533 433b2f1eSMasahiro YamadaKBUILD_CFLAGS += $(call cc-option,-Wno-format-nonliteral) 534 433b2f1eSMasahiro Yamada 535 433b2f1eSMasahiro Yamada# turn jbsr into jsr for m68k 536 433b2f1eSMasahiro Yamadaifeq ($(ARCH),m68k) 537 433b2f1eSMasahiro Yamadaifeq ($(findstring 3.4,$(shell $(CC) --version)),3.4) 538 433b2f1eSMasahiro YamadaKBUILD_AFLAGS += -Wa,-gstabs,-S 539 433b2f1eSMasahiro Yamadaendif 540 433b2f1eSMasahiro Yamadaendif 541 433b2f1eSMasahiro Yamada 542 433b2f1eSMasahiro Yamadaifneq ($(CONFIG_SYS_TEXT_BASE),) 543 433b2f1eSMasahiro YamadaKBUILD_CPPFLAGS += -DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE) 544 433b2f1eSMasahiro Yamadaendif 545 433b2f1eSMasahiro Yamada 546 433b2f1eSMasahiro Yamadaexport CONFIG_SYS_TEXT_BASE 547 433b2f1eSMasahiro Yamada 548 433b2f1eSMasahiro Yamada# Use UBOOTINCLUDE when you must reference the include/ directory. 549 433b2f1eSMasahiro Yamada# Needed to be compatible with the O= option 550 433b2f1eSMasahiro YamadaUBOOTINCLUDE := 551 433b2f1eSMasahiro Yamadaifneq ($(OBJTREE),$(SRCTREE)) 552 433b2f1eSMasahiro YamadaUBOOTINCLUDE += -I$(OBJTREE)/include 553 433b2f1eSMasahiro Yamadaendif 554 433b2f1eSMasahiro YamadaUBOOTINCLUDE += -I$(srctree)/include \ 555 433b2f1eSMasahiro Yamada -I$(srctree)/arch/$(ARCH)/include 556 433b2f1eSMasahiro Yamada 557 433b2f1eSMasahiro YamadaNOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) 558 433b2f1eSMasahiro YamadaCHECKFLAGS += $(NOSTDINC_FLAGS) 559 433b2f1eSMasahiro Yamada 560 433b2f1eSMasahiro Yamada# FIX ME 561 433b2f1eSMasahiro Yamadacpp_flags := $(KBUILD_CPPFLAGS) $(CPPFLAGS) $(UBOOTINCLUDE) $(NOSTDINC_FLAGS) 562 433b2f1eSMasahiro Yamadac_flags := $(KBUILD_CFLAGS) $(cpp_flags) 563 433b2f1eSMasahiro Yamada 564 656de6b8SMasahiro Yamada.PHONY : $(VERSION_FILE) $(TIMESTAMP_FILE) 565 433b2f1eSMasahiro Yamada 566 7ebf7443Swdenk######################################################################### 567 7ebf7443Swdenk# U-Boot objects....order is important (i.e. start must be first) 568 7ebf7443Swdenk 569 e8a8b824SMasahiro Yamadahead-y := $(CPUDIR)/start.o 570 e8a8b824SMasahiro Yamadahead-$(CONFIG_4xx) += arch/powerpc/cpu/ppc4xx/resetvec.o 571 e8a8b824SMasahiro Yamadahead-$(CONFIG_MPC85xx) += arch/powerpc/cpu/mpc85xx/resetvec.o 572 7ebf7443Swdenk 573 9e414032SMasahiro YamadaHAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n) 574 8b5a0264SDaniel Schwierzeck 575 656de6b8SMasahiro Yamadalibs-y += lib/ 576 656de6b8SMasahiro Yamadalibs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/ 577 656de6b8SMasahiro Yamadalibs-y += $(CPUDIR)/ 578 1d9f4105Swdenkifdef SOC 579 656de6b8SMasahiro Yamadalibs-y += $(CPUDIR)/$(SOC)/ 580 1d9f4105Swdenkendif 581 656de6b8SMasahiro Yamadalibs-$(CONFIG_IXP4XX_NPE) += drivers/net/npe/ 582 656de6b8SMasahiro Yamadalibs-$(CONFIG_OF_EMBED) += dts/ 583 656de6b8SMasahiro Yamadalibs-y += arch/$(ARCH)/lib/ 584 656de6b8SMasahiro Yamadalibs-y += fs/ 585 656de6b8SMasahiro Yamadalibs-y += net/ 586 656de6b8SMasahiro Yamadalibs-y += disk/ 587 656de6b8SMasahiro Yamadalibs-y += drivers/ 588 656de6b8SMasahiro Yamadalibs-y += drivers/dma/ 589 656de6b8SMasahiro Yamadalibs-y += drivers/gpio/ 590 656de6b8SMasahiro Yamadalibs-y += drivers/i2c/ 591 656de6b8SMasahiro Yamadalibs-y += drivers/input/ 592 656de6b8SMasahiro Yamadalibs-y += drivers/mmc/ 593 656de6b8SMasahiro Yamadalibs-y += drivers/mtd/ 594 656de6b8SMasahiro Yamadalibs-$(CONFIG_CMD_NAND) += drivers/mtd/nand/ 595 656de6b8SMasahiro Yamadalibs-y += drivers/mtd/onenand/ 596 656de6b8SMasahiro Yamadalibs-$(CONFIG_CMD_UBI) += drivers/mtd/ubi/ 597 656de6b8SMasahiro Yamadalibs-y += drivers/mtd/spi/ 598 656de6b8SMasahiro Yamadalibs-y += drivers/net/ 599 656de6b8SMasahiro Yamadalibs-y += drivers/net/phy/ 600 656de6b8SMasahiro Yamadalibs-y += drivers/pci/ 601 656de6b8SMasahiro Yamadalibs-y += drivers/power/ \ 602 e2906a59SMasahiro Yamada drivers/power/fuel_gauge/ \ 603 e2906a59SMasahiro Yamada drivers/power/mfd/ \ 604 e2906a59SMasahiro Yamada drivers/power/pmic/ \ 605 e2906a59SMasahiro Yamada drivers/power/battery/ 606 656de6b8SMasahiro Yamadalibs-y += drivers/spi/ 607 656de6b8SMasahiro Yamadalibs-$(CONFIG_FMAN_ENET) += drivers/net/fm/ 608 656de6b8SMasahiro Yamadalibs-$(CONFIG_SYS_FSL_DDR) += drivers/ddr/fsl/ 609 656de6b8SMasahiro Yamadalibs-y += drivers/serial/ 610 656de6b8SMasahiro Yamadalibs-y += drivers/usb/eth/ 611 656de6b8SMasahiro Yamadalibs-y += drivers/usb/gadget/ 612 656de6b8SMasahiro Yamadalibs-y += drivers/usb/host/ 613 656de6b8SMasahiro Yamadalibs-y += drivers/usb/musb/ 614 656de6b8SMasahiro Yamadalibs-y += drivers/usb/musb-new/ 615 656de6b8SMasahiro Yamadalibs-y += drivers/usb/phy/ 616 656de6b8SMasahiro Yamadalibs-y += drivers/usb/ulpi/ 617 656de6b8SMasahiro Yamadalibs-y += common/ 618 656de6b8SMasahiro Yamadalibs-y += lib/libfdt/ 619 656de6b8SMasahiro Yamadalibs-$(CONFIG_API) += api/ 620 656de6b8SMasahiro Yamadalibs-$(CONFIG_HAS_POST) += post/ 621 656de6b8SMasahiro Yamadalibs-y += test/ 622 f9328639SMarian Balakowicz 623 24e8bee5SAlison Wangifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35 mxs vf610)) 624 656de6b8SMasahiro Yamadalibs-y += arch/$(ARCH)/imx-common/ 625 18936ee2SJason Liuendif 626 18936ee2SJason Liu 627 656de6b8SMasahiro Yamadalibs-$(CONFIG_ARM) += arch/arm/cpu/ 628 656de6b8SMasahiro Yamadalibs-$(CONFIG_PPC) += arch/powerpc/cpu/ 629 852bd07cSMinkyu Kang 630 656de6b8SMasahiro Yamadalibs-y += board/$(BOARDDIR)/ 631 08e39a84SMasahiro Yamada 632 656de6b8SMasahiro Yamadalibs-y := $(sort $(libs-y)) 633 656de6b8SMasahiro Yamada 634 656de6b8SMasahiro Yamadau-boot-dirs := $(patsubst %/,%,$(filter %/, $(libs-y))) tools examples 635 656de6b8SMasahiro Yamada 636 656de6b8SMasahiro Yamadau-boot-alldirs := $(sort $(u-boot-dirs) $(patsubst %/,%,$(filter %/, $(libs-)))) 637 656de6b8SMasahiro Yamada 638 656de6b8SMasahiro Yamadalibs-y := $(patsubst %/, %/built-in.o, $(libs-y)) 639 656de6b8SMasahiro Yamada 640 656de6b8SMasahiro Yamadau-boot-init := $(head-y) 641 656de6b8SMasahiro Yamadau-boot-main := $(libs-y) 642 656de6b8SMasahiro Yamada 643 a8c7c708Swdenk 644 4f7cb08eSwdenk# Add GCC lib 645 52b1bf2cSWolfgang Denkifdef USE_PRIVATE_LIBGCC 646 52b1bf2cSWolfgang Denkifeq ("$(USE_PRIVATE_LIBGCC)", "yes") 647 6825a95bSMasahiro YamadaPLATFORM_LIBGCC = $(OBJTREE)/arch/$(ARCH)/lib/lib.a 648 52b1bf2cSWolfgang Denkelse 649 52b1bf2cSWolfgang DenkPLATFORM_LIBGCC = -L $(USE_PRIVATE_LIBGCC) -lgcc 650 52b1bf2cSWolfgang Denkendif 651 52b1bf2cSWolfgang Denkelse 652 6825a95bSMasahiro YamadaPLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(c_flags) -print-libgcc-file-name`) -lgcc 653 52b1bf2cSWolfgang Denkendif 654 52b1bf2cSWolfgang DenkPLATFORM_LIBS += $(PLATFORM_LIBGCC) 655 52b1bf2cSWolfgang Denkexport PLATFORM_LIBS 656 3d3befa7Swdenk 657 6ac9f479SMike Frysinger# Special flags for CPP when processing the linker script. 658 6ac9f479SMike Frysinger# Pass the version down so we can handle backwards compatibility 659 6ac9f479SMike Frysinger# on the fly. 660 6ac9f479SMike FrysingerLDPPFLAGS += \ 661 6ac9f479SMike Frysinger -include $(TOPDIR)/include/u-boot/u-boot.lds.h \ 662 7e6403a6SSimon Glass -DCPUDIR=$(CPUDIR) \ 663 6ac9f479SMike Frysinger $(shell $(LD) --version | \ 664 6ac9f479SMike Frysinger sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p') 665 6ac9f479SMike Frysinger 666 7ebf7443Swdenk######################################################################### 667 bdccc4feSwdenk######################################################################### 668 7ebf7443Swdenk 669 f3a14d37SMike Frysingerifneq ($(CONFIG_BOARD_SIZE_LIMIT),) 670 f3a14d37SMike FrysingerBOARD_SIZE_CHECK = \ 671 f3a14d37SMike Frysinger @actual=`wc -c $@ | awk '{print $$1}'`; \ 672 d060e6f4SJoe Hershberger limit=`printf "%d" $(CONFIG_BOARD_SIZE_LIMIT)`; \ 673 f3a14d37SMike Frysinger if test $$actual -gt $$limit; then \ 674 d060e6f4SJoe Hershberger echo "$@ exceeds file size limit:" >&2 ; \ 675 d060e6f4SJoe Hershberger echo " limit: $$limit bytes" >&2 ; \ 676 d060e6f4SJoe Hershberger echo " actual: $$actual bytes" >&2 ; \ 677 d060e6f4SJoe Hershberger echo " excess: $$((actual - limit)) bytes" >&2; \ 678 f3a14d37SMike Frysinger exit 1; \ 679 f3a14d37SMike Frysinger fi 680 f3a14d37SMike Frysingerelse 681 f3a14d37SMike FrysingerBOARD_SIZE_CHECK = 682 f3a14d37SMike Frysingerendif 683 f3a14d37SMike Frysinger 684 8137af19SScott Wood# Statically apply RELA-style relocations (currently arm64 only) 685 8137af19SScott Woodifneq ($(CONFIG_STATIC_RELA),) 686 8137af19SScott Wood# $(1) is u-boot ELF, $(2) is u-boot bin, $(3) is text base 687 8137af19SScott WoodDO_STATIC_RELA = \ 688 8137af19SScott Wood start=$$($(NM) $(1) | grep __rel_dyn_start | cut -f 1 -d ' '); \ 689 8137af19SScott Wood end=$$($(NM) $(1) | grep __rel_dyn_end | cut -f 1 -d ' '); \ 690 9e414032SMasahiro Yamada tools/relocate-rela $(2) $(3) $$start $$end 691 8137af19SScott Woodelse 692 8137af19SScott WoodDO_STATIC_RELA = 693 8137af19SScott Woodendif 694 8137af19SScott Wood 695 3e88337bSMike Frysinger# Always append ALL so that arch config.mk's can add custom ones 696 9e414032SMasahiro YamadaALL-y += u-boot.srec u-boot.bin System.map 697 e935a374SHaiying Wang 698 9e414032SMasahiro YamadaALL-$(CONFIG_NAND_U_BOOT) += u-boot-nand.bin 699 9e414032SMasahiro YamadaALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin 700 9e414032SMasahiro YamadaALL-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl 701 9e414032SMasahiro YamadaALL-$(CONFIG_SPL) += spl/u-boot-spl.bin 702 9e414032SMasahiro YamadaALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img 703 9e414032SMasahiro YamadaALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin 704 9e414032SMasahiro YamadaALL-$(CONFIG_OF_SEPARATE) += u-boot.dtb u-boot-dtb.bin 705 b343bbb5SVadim Bendeburyifneq ($(CONFIG_SPL_TARGET),) 706 9e414032SMasahiro YamadaALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%) 707 b343bbb5SVadim Bendeburyendif 708 9e414032SMasahiro YamadaALL-$(CONFIG_REMAKE_ELF) += u-boot.elf 709 7ebf7443Swdenk 710 12b7b70cSAllen Martin# enable combined SPL/u-boot/dtb rules for tegra 711 6d6c0baeSTom Warrenifneq ($(CONFIG_TEGRA),) 712 7dcd3a21SVidya Sagarifeq ($(CONFIG_SPL),y) 713 12b7b70cSAllen Martinifeq ($(CONFIG_OF_SEPARATE),y) 714 9e414032SMasahiro YamadaALL-y += u-boot-dtb-tegra.bin 715 12b7b70cSAllen Martinelse 716 9e414032SMasahiro YamadaALL-y += u-boot-nodtb-tegra.bin 717 12b7b70cSAllen Martinendif 718 12b7b70cSAllen Martinendif 719 7dcd3a21SVidya Sagarendif 720 12b7b70cSAllen Martin 721 433b2f1eSMasahiro YamadaLDFLAGS_u-boot += -T u-boot.lds $(LDFLAGS_FINAL) 722 433b2f1eSMasahiro Yamadaifneq ($(CONFIG_SYS_TEXT_BASE),) 723 433b2f1eSMasahiro YamadaLDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE) 724 433b2f1eSMasahiro Yamadaendif 725 433b2f1eSMasahiro Yamada 726 656de6b8SMasahiro Yamadaall: $(ALL-y) 727 7ebf7443Swdenk 728 9e414032SMasahiro Yamadau-boot.dtb: checkdtc u-boot 729 9e414032SMasahiro Yamada $(MAKE) $(build)=dts binary 730 9e414032SMasahiro Yamada mv dts/dt.dtb $@ 731 2c0f79e4SSimon Glass 732 9e414032SMasahiro Yamadau-boot-dtb.bin: u-boot.bin u-boot.dtb 733 2c0f79e4SSimon Glass cat $^ >$@ 734 2c0f79e4SSimon Glass 735 9e414032SMasahiro Yamadau-boot.hex: u-boot 736 6310eb9dSwdenk $(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@ 737 6310eb9dSwdenk 738 9e414032SMasahiro Yamadau-boot.srec: u-boot 739 47ed5dd0SAlbert ARIBAUD $(OBJCOPY) ${OBJCFLAGS} -O srec $< $@ 740 7ebf7443Swdenk 741 9e414032SMasahiro Yamadau-boot.bin: u-boot 742 7ebf7443Swdenk $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@ 743 8137af19SScott Wood $(call DO_STATIC_RELA,$<,$@,$(CONFIG_SYS_TEXT_BASE)) 744 f3a14d37SMike Frysinger $(BOARD_SIZE_CHECK) 745 7ebf7443Swdenk 746 9e414032SMasahiro Yamadau-boot.ldr: u-boot 747 76d82187SMike Frysinger $(CREATE_LDR_ENV) 748 68e56324SMike Frysinger $(LDR) -T $(CONFIG_BFIN_CPU) -c $@ $< $(LDR_FLAGS) 749 f3a14d37SMike Frysinger $(BOARD_SIZE_CHECK) 750 94a91e24SMike Frysinger 751 9e414032SMasahiro Yamadau-boot.ldr.hex: u-boot.ldr 752 94a91e24SMike Frysinger $(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@ -I binary 753 94a91e24SMike Frysinger 754 9e414032SMasahiro Yamadau-boot.ldr.srec: u-boot.ldr 755 94a91e24SMike Frysinger $(OBJCOPY) ${OBJCFLAGS} -O srec $< $@ -I binary 756 94a91e24SMike Frysinger 757 b40bda6bSStefan Roese# 758 b40bda6bSStefan Roese# U-Boot entry point, needed for booting of full-blown U-Boot 759 b40bda6bSStefan Roese# from the SPL U-Boot version. 760 b40bda6bSStefan Roese# 761 b40bda6bSStefan Roeseifndef CONFIG_SYS_UBOOT_START 762 b40bda6bSStefan RoeseCONFIG_SYS_UBOOT_START := 0 763 b40bda6bSStefan Roeseendif 764 b40bda6bSStefan Roese 765 9e414032SMasahiro Yamadau-boot.img: u-boot.bin 766 9e414032SMasahiro Yamada tools/mkimage -A $(ARCH) -T firmware -C none \ 767 b40bda6bSStefan Roese -O u-boot -a $(CONFIG_SYS_TEXT_BASE) \ 768 b40bda6bSStefan Roese -e $(CONFIG_SYS_UBOOT_START) \ 769 881a87ecSWolfgang Denk -n $(shell sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE) | \ 770 bdccc4feSwdenk sed -e 's/"[ ]*$$/ for $(BOARD) board"/') \ 771 bdccc4feSwdenk -d $< $@ 772 bdccc4feSwdenk 773 656de6b8SMasahiro Yamadau-boot.imx: u-boot.bin 774 9e414032SMasahiro Yamada $(MAKE) $(build)=arch/arm/imx-common $(objtree)/u-boot.imx 775 8edcde5eSStefano Babic 776 9e414032SMasahiro Yamadau-boot.kwb: u-boot.bin 777 9e414032SMasahiro Yamada tools/mkimage -n $(CONFIG_SYS_KWD_CONFIG) -T kwbimage \ 778 2ea88b06SEric Cooper -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) -d $< $@ 779 aa0c7a86SPrafulla Wadaskar 780 9e414032SMasahiro Yamadau-boot.pbl: u-boot.bin 781 9e414032SMasahiro Yamada tools/mkimage -n $(CONFIG_SYS_FSL_PBL_RCW) \ 782 690e4258SPrabhakar Kushwaha -R $(CONFIG_SYS_FSL_PBL_PBI) -T pblimage \ 783 5d898a00SShaohui Xie -d $< $@ 784 5d898a00SShaohui Xie 785 9e414032SMasahiro Yamadau-boot.sha1: u-boot.bin 786 9e414032SMasahiro Yamada tools/ubsha1 u-boot.bin 787 566a494fSHeiko Schocher 788 9e414032SMasahiro Yamadau-boot.dis: u-boot 789 7ebf7443Swdenk $(OBJDUMP) -d $< > $@ 790 7ebf7443Swdenk 791 3aa29de0SYing Zhang# $@ is output, $(1) and $(2) are inputs, $(3) is padded intermediate, 792 3aa29de0SYing Zhang# $(4) is pad-to 793 3aa29de0SYing ZhangSPL_PAD_APPEND = \ 794 3aa29de0SYing Zhang $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(4) -I binary -O binary \ 795 9e414032SMasahiro Yamada $(1) $(3); \ 796 9e414032SMasahiro Yamada cat $(3) $(2) > $@; \ 797 9e414032SMasahiro Yamada rm $(3) 798 74752baaSScott Wood 799 3aa29de0SYing Zhangifdef CONFIG_TPL 800 9e414032SMasahiro YamadaSPL_PAYLOAD := tpl/u-boot-with-tpl.bin 801 3aa29de0SYing Zhangelse 802 9e414032SMasahiro YamadaSPL_PAYLOAD := u-boot.bin 803 3aa29de0SYing Zhangendif 804 74752baaSScott Wood 805 9e414032SMasahiro Yamadau-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) 806 3aa29de0SYing Zhang $(call SPL_PAD_APPEND,$<,$(SPL_PAYLOAD),spl/u-boot-spl-pad.bin,$(CONFIG_SPL_PAD_TO)) 807 3aa29de0SYing Zhang 808 9e414032SMasahiro Yamadatpl/u-boot-with-tpl.bin: tpl/u-boot-tpl.bin u-boot.bin 809 9e414032SMasahiro Yamada $(call SPL_PAD_APPEND,$<,u-boot.bin,tpl/u-boot-tpl-pad.bin,$(CONFIG_TPL_PAD_TO)) 810 7816f2cfSHeiko Schocher 811 9e414032SMasahiro Yamadau-boot-with-spl.imx: spl/u-boot-spl.bin u-boot.bin 812 9e414032SMasahiro Yamada $(MAKE) $(build)=arch/arm/imx-common \ 813 ba597609SBenoît Thébaudeau $(OBJTREE)/u-boot-with-spl.imx 814 ba597609SBenoît Thébaudeau 815 9e414032SMasahiro Yamadau-boot-with-nand-spl.imx: spl/u-boot-spl.bin u-boot.bin 816 9e414032SMasahiro Yamada $(MAKE) $(build)=arch/arm/imx-common \ 817 7d5a5c79SBenoît Thébaudeau $(OBJTREE)/u-boot-with-nand-spl.imx 818 7d5a5c79SBenoît Thébaudeau 819 9e414032SMasahiro Yamadau-boot.ubl: u-boot-with-spl.bin 820 9e414032SMasahiro Yamada tools/mkimage -n $(UBL_CONFIG) -T ublimage \ 821 9e414032SMasahiro Yamada -e $(CONFIG_SYS_TEXT_BASE) -d $< u-boot.ubl 822 277f00f5SJosé Miguel Gonçalves 823 9e414032SMasahiro Yamadau-boot.ais: spl/u-boot-spl.bin u-boot.img 824 9e414032SMasahiro Yamada tools/mkimage -s -n $(if $(CONFIG_AIS_CONFIG_FILE),$(srctree)/$(CONFIG_AIS_CONFIG_FILE:"%"=%),"/dev/null") \ 825 6d660e77SSughosh Ganu -T aisimage \ 826 d36d8859SChristian Riesch -e $(CONFIG_SPL_TEXT_BASE) \ 827 9e414032SMasahiro Yamada -d spl/u-boot-spl.bin \ 828 9e414032SMasahiro Yamada spl/u-boot-spl.ais 829 d36d8859SChristian Riesch $(OBJCOPY) ${OBJCFLAGS} -I binary \ 830 d36d8859SChristian Riesch --pad-to=$(CONFIG_SPL_MAX_SIZE) -O binary \ 831 9e414032SMasahiro Yamada spl/u-boot-spl.ais spl/u-boot-spl-pad.ais 832 9e414032SMasahiro Yamada cat spl/u-boot-spl-pad.ais u-boot.img > u-boot.ais 833 d36d8859SChristian Riesch 834 a5453555SOtavio Salvador 835 9e414032SMasahiro Yamadau-boot.sb: u-boot.bin spl/u-boot-spl.bin 836 9e414032SMasahiro Yamada $(MAKE) $(build)=$(CPUDIR)/$(SOC)/ $(OBJTREE)/u-boot.sb 837 30b9b932SMarek Vasut 838 94aebe6cSStefan Roese# On x600 (SPEAr600) U-Boot is appended to U-Boot SPL. 839 94aebe6cSStefan Roese# Both images are created using mkimage (crc etc), so that the ROM 840 94aebe6cSStefan Roese# bootloader can check its integrity. Padding needs to be done to the 841 94aebe6cSStefan Roese# SPL image (with mkimage header) and not the binary. Otherwise the resulting image 842 94aebe6cSStefan Roese# which is loaded/copied by the ROM bootloader to SRAM doesn't fit. 843 94aebe6cSStefan Roese# The resulting image containing both U-Boot images is called u-boot.spr 844 9e414032SMasahiro Yamadau-boot.spr: u-boot.img spl/u-boot-spl.bin 845 9e414032SMasahiro Yamada tools/mkimage -A $(ARCH) -T firmware -C none \ 846 94aebe6cSStefan Roese -a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n XLOADER \ 847 9e414032SMasahiro Yamada -d spl/u-boot-spl.bin $@ 848 57270260SMasahiro Yamada $(OBJCOPY) -I binary -O binary \ 849 57270260SMasahiro Yamada --pad-to=$(CONFIG_SPL_PAD_TO) --gap-fill=0xff $@ 850 9e414032SMasahiro Yamada cat u-boot.img >> $@ 851 94aebe6cSStefan Roese 852 6d6c0baeSTom Warrenifneq ($(CONFIG_TEGRA),) 853 9e414032SMasahiro Yamadau-boot-nodtb-tegra.bin: spl/u-boot-spl.bin u-boot.bin 854 9e414032SMasahiro Yamada $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(CONFIG_SYS_TEXT_BASE) -O binary spl/u-boot-spl spl/u-boot-spl-pad.bin 855 9e414032SMasahiro Yamada cat spl/u-boot-spl-pad.bin u-boot.bin > $@ 856 9e414032SMasahiro Yamada rm spl/u-boot-spl-pad.bin 857 9972db5cSStephen Warren 858 9972db5cSStephen Warrenifeq ($(CONFIG_OF_SEPARATE),y) 859 9e414032SMasahiro Yamadau-boot-dtb-tegra.bin: u-boot-nodtb-tegra.bin u-boot.dtb 860 9e414032SMasahiro Yamada cat u-boot-nodtb-tegra.bin u-boot.dtb > $@ 861 9972db5cSStephen Warrenendif 862 984df4ecSAllen Martinendif 863 984df4ecSAllen Martin 864 9e414032SMasahiro Yamadau-boot-img.bin: spl/u-boot-spl.bin u-boot.img 865 9e414032SMasahiro Yamada cat spl/u-boot-spl.bin u-boot.img > $@ 866 fb3d2b8aSStefan Roese 867 ecddccd0SStefan Roese# PPC4xx needs the SPL at the end of the image, since the reset vector 868 ecddccd0SStefan Roese# is located at 0xfffffffc. So we can't use the "u-boot-img.bin" target 869 ecddccd0SStefan Roese# and need to introduce a new build target with the full blown U-Boot 870 ecddccd0SStefan Roese# at the start padded up to the start of the SPL image. And then concat 871 ecddccd0SStefan Roese# the SPL image to the end. 872 9e414032SMasahiro Yamadau-boot-img-spl-at-end.bin: spl/u-boot-spl.bin u-boot.img 873 57270260SMasahiro Yamada $(OBJCOPY) -I binary -O binary --pad-to=$(CONFIG_UBOOT_PAD_TO) \ 874 9e414032SMasahiro Yamada --gap-fill=0xff u-boot.img $@ 875 9e414032SMasahiro Yamada cat spl/u-boot-spl.bin >> $@ 876 ecddccd0SStefan Roese 877 f4dc714aSScott Wood# Create a new ELF from a raw binary file. This is useful for arm64 878 f4dc714aSScott Wood# where static relocation needs to be performed on the raw binary, 879 f4dc714aSScott Wood# but certain simulators only accept an ELF file (but don't do the 880 f4dc714aSScott Wood# relocation). 881 f4dc714aSScott Wood# FIXME refactor dts/Makefile to share target/arch detection 882 9e414032SMasahiro Yamadau-boot.elf: u-boot.bin 883 f4dc714aSScott Wood @$(OBJCOPY) -B aarch64 -I binary -O elf64-littleaarch64 \ 884 9e414032SMasahiro Yamada $< u-boot-elf.o 885 9e414032SMasahiro Yamada @$(LD) u-boot-elf.o -o $@ \ 886 f4dc714aSScott Wood --defsym=_start=$(CONFIG_SYS_TEXT_BASE) \ 887 f4dc714aSScott Wood -Ttext=$(CONFIG_SYS_TEXT_BASE) 888 f4dc714aSScott Wood 889 86eb49b3SSimon Glassifeq ($(CONFIG_SANDBOX),y) 890 86eb49b3SSimon GlassGEN_UBOOT = \ 891 9e414032SMasahiro Yamada $(CC) $(SYMS) -T u-boot.lds \ 892 656de6b8SMasahiro Yamada -Wl,--start-group $(u-boot-main) -Wl,--end-group \ 893 86eb49b3SSimon Glass $(PLATFORM_LIBS) -Wl,-Map -Wl,u-boot.map -o u-boot 894 86eb49b3SSimon Glasselse 895 ecb1dc89SMike FrysingerGEN_UBOOT = \ 896 9e414032SMasahiro Yamada $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) \ 897 656de6b8SMasahiro Yamada $(u-boot-init) \ 898 656de6b8SMasahiro Yamada --start-group $(u-boot-main) --end-group $(PLATFORM_LIBS) \ 899 b2184c31Swdenk -Map u-boot.map -o u-boot 900 86eb49b3SSimon Glassendif 901 86eb49b3SSimon Glass 902 656de6b8SMasahiro Yamadau-boot: $(u-boot-init) $(u-boot-main) u-boot.lds 903 ecb1dc89SMike Frysinger $(GEN_UBOOT) 904 ecb1dc89SMike Frysingerifeq ($(CONFIG_KALLSYMS),y) 905 9e414032SMasahiro Yamada smap=`$(call SYSTEM_MAP,u-boot) | \ 906 1aada9cdSWolfgang Denk awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \ 907 6825a95bSMasahiro Yamada $(CC) $(c_flags) -DSYSTEM_MAP="\"$${smap}\"" \ 908 9e414032SMasahiro Yamada -c $(srctree)/common/system_map.c -o common/system_map.o 909 9e414032SMasahiro Yamada $(GEN_UBOOT) common/system_map.o 910 ecb1dc89SMike Frysingerendif 911 7ebf7443Swdenk 912 656de6b8SMasahiro Yamada# The actual objects are generated when descending, 913 656de6b8SMasahiro Yamada# make sure no implicit rule kicks in 914 656de6b8SMasahiro Yamada$(sort $(u-boot-init) $(u-boot-main)): $(u-boot-dirs) ; 915 f9328639SMarian Balakowicz 916 656de6b8SMasahiro Yamada# Handle descending into subdirectories listed in $(vmlinux-dirs) 917 656de6b8SMasahiro Yamada# Preset locale variables to speed up the build process. Limit locale 918 656de6b8SMasahiro Yamada# tweaks to this spot to avoid wrong language settings when running 919 656de6b8SMasahiro Yamada# make menuconfig etc. 920 656de6b8SMasahiro Yamada# Error messages still appears in the original language 921 a8c7c708Swdenk 922 656de6b8SMasahiro YamadaPHONY += $(u-boot-dirs) 923 656de6b8SMasahiro Yamada$(u-boot-dirs): depend scripts_basic 924 6825a95bSMasahiro Yamada $(Q)$(MAKE) $(build)=$@ 925 940db16dSMasahiro Yamada 926 656de6b8SMasahiro Yamadatools: $(TIMESTAMP_FILE) $(VERSION_FILE) 927 656de6b8SMasahiro Yamada# The "tools" are needed early 928 656de6b8SMasahiro Yamada$(filter-out tools, $(u-boot-dirs)): tools 929 656de6b8SMasahiro Yamada# The "examples" conditionally depend on U-Boot (say, when USE_PRIVATE_LIBGCC 930 656de6b8SMasahiro Yamada# is "yes"), so compile examples after U-Boot is compiled. 931 656de6b8SMasahiro Yamadaexamples: $(filter-out examples, $(u-boot-dirs)) 932 656de6b8SMasahiro Yamada 933 349e83f0SChe-liang Chiou 934 433b2f1eSMasahiro Yamada# 935 433b2f1eSMasahiro Yamada# Auto-generate the autoconf.mk file (which is included by all makefiles) 936 433b2f1eSMasahiro Yamada# 937 433b2f1eSMasahiro Yamada# This target actually generates 2 files; autoconf.mk and autoconf.mk.dep. 938 433b2f1eSMasahiro Yamada# the dep file is only include in this top level makefile to determine when 939 433b2f1eSMasahiro Yamada# to regenerate the autoconf.mk file. 940 433b2f1eSMasahiro Yamada 941 433b2f1eSMasahiro Yamadaquiet_cmd_autoconf_dep = GEN $@ 942 433b2f1eSMasahiro Yamada cmd_autoconf_dep = $(CC) -x c -DDO_DEPS_ONLY -M $(c_flags) \ 943 433b2f1eSMasahiro Yamada -MQ include/autoconf.mk $(srctree)/include/common.h > $@ || rm $@ 944 433b2f1eSMasahiro Yamada 945 433b2f1eSMasahiro Yamadainclude/autoconf.mk.dep: include/config.h include/common.h 946 433b2f1eSMasahiro Yamada $(call cmd,autoconf_dep) 947 433b2f1eSMasahiro Yamada 948 433b2f1eSMasahiro Yamadaquiet_cmd_autoconf = GEN $@ 949 433b2f1eSMasahiro Yamada cmd_autoconf = \ 950 433b2f1eSMasahiro Yamada $(CPP) $(c_flags) -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && \ 951 433b2f1eSMasahiro Yamada sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp > $@; \ 952 433b2f1eSMasahiro Yamada rm $@.tmp 953 433b2f1eSMasahiro Yamada 954 433b2f1eSMasahiro Yamadainclude/autoconf.mk: include/config.h 955 433b2f1eSMasahiro Yamada $(call cmd,autoconf) 956 433b2f1eSMasahiro Yamada 957 9e414032SMasahiro Yamadau-boot.lds: $(LDSCRIPT) depend 958 6825a95bSMasahiro Yamada $(CPP) $(cpp_flags) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@ 959 1aada9cdSWolfgang Denk 960 6825a95bSMasahiro Yamadanand_spl: $(TIMESTAMP_FILE) $(VERSION_FILE) depend scripts_basic 961 9e414032SMasahiro Yamada $(MAKE) $(build)=nand_spl/board/$(BOARDDIR) all 962 887e2ec9SStefan Roese 963 9e414032SMasahiro Yamadau-boot-nand.bin: nand_spl u-boot.bin 964 9e414032SMasahiro Yamada cat nand_spl/u-boot-spl-16k.bin u-boot.bin > u-boot-nand.bin 965 887e2ec9SStefan Roese 966 656de6b8SMasahiro Yamadaspl/u-boot-spl.bin: tools depend scripts_basic 967 9e414032SMasahiro Yamada $(MAKE) obj=spl -f $(srctree)/spl/Makefile all 968 5df2ee27SDaniel Schwierzeck 969 656de6b8SMasahiro Yamadatpl/u-boot-tpl.bin: tools depend scripts_basic 970 9e414032SMasahiro Yamada $(MAKE) obj=tpl -f $(srctree)/spl/Makefile all CONFIG_TPL_BUILD=y 971 3aa29de0SYing Zhang 972 2a998793SDaniel Hobi# Explicitly make _depend in subdirs containing multiple targets to prevent 973 2a998793SDaniel Hobi# parallel sub-makes creating .depend files simultaneously. 974 16a354f9SWolfgang Denkdepend dep: $(TIMESTAMP_FILE) $(VERSION_FILE) \ 975 9e414032SMasahiro Yamada include/generated/generic-asm-offsets.h \ 976 9e414032SMasahiro Yamada include/generated/asm-offsets.h 977 7ebf7443Swdenk 978 656de6b8SMasahiro YamadaTAG_SUBDIRS := $(u-boot-dirs) include 979 a340c325SJean-Christophe PLAGNIOL-VILLARD 980 857d9ea6SHorst KronstorferFIND := find 981 857d9ea6SHorst KronstorferFINDFLAGS := -L 982 857d9ea6SHorst Kronstorfer 983 47f15711SMasahiro YamadaPHONY += checkstack 984 47f15711SMasahiro Yamada 985 1064d980STom Rinicheckstack: 986 47f15711SMasahiro Yamada $(OBJDUMP) -d u-boot $$(find . -name u-boot-spl) | \ 987 47f15711SMasahiro Yamada $(PERL) $(src)/scripts/checkstack.pl $(ARCH) 988 1064d980STom Rini 989 f9328639SMarian Balakowicztags ctags: 990 9e414032SMasahiro Yamada ctags -w -o ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \ 991 e5e4e705SLi Yang -name '*.[chS]' -print` 992 7ebf7443Swdenk 993 7ebf7443Swdenketags: 994 857d9ea6SHorst Kronstorfer etags -a -o $(obj)etags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \ 995 e5e4e705SLi Yang -name '*.[chS]' -print` 996 ffda586fSLi Yangcscope: 997 857d9ea6SHorst Kronstorfer $(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \ 998 857d9ea6SHorst Kronstorfer cscope.files 999 ffda586fSLi Yang cscope -b -q -k 1000 7ebf7443Swdenk 1001 ecb1dc89SMike FrysingerSYSTEM_MAP = \ 1002 ecb1dc89SMike Frysinger $(NM) $1 | \ 1003 7ebf7443Swdenk grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \ 1004 ecb1dc89SMike Frysinger LC_ALL=C sort 1005 9e414032SMasahiro YamadaSystem.map: u-boot 1006 bc8bb6ecSMasahiro Yamada @$(call SYSTEM_MAP,$<) > $@ 1007 7ebf7443Swdenk 1008 06a119a0STom Rinicheckthumb: 1009 06a119a0STom Rini @if test $(call cc-version) -lt 0404; then \ 1010 06a119a0STom Rini echo -n '*** Your GCC does not produce working '; \ 1011 06a119a0STom Rini echo 'binaries in THUMB mode.'; \ 1012 06a119a0STom Rini echo '*** Your board is configured for THUMB mode.'; \ 1013 06a119a0STom Rini false; \ 1014 06a119a0STom Rini fi 1015 6ec63f41SScott Wood 1016 6ec63f41SScott Wood# GCC 3.x is reported to have problems generating the type of relocation 1017 6ec63f41SScott Wood# that U-Boot wants. 1018 6ec63f41SScott Wood# See http://lists.denx.de/pipermail/u-boot/2012-September/135156.html 1019 6ec63f41SScott Woodcheckgcc4: 1020 6ec63f41SScott Wood @if test $(call cc-version) -lt 0400; then \ 1021 6ec63f41SScott Wood echo -n '*** Your GCC is too old, please upgrade to GCC 4.x or newer'; \ 1022 6ec63f41SScott Wood false; \ 1023 6ec63f41SScott Wood fi 1024 6ec63f41SScott Wood 1025 501ebdf2SStephen Warrencheckdtc: 1026 501ebdf2SStephen Warren @if test $(call dtc-version) -lt 0104; then \ 1027 501ebdf2SStephen Warren echo '*** Your dtc is too old, please upgrade to dtc 1.4 or newer'; \ 1028 501ebdf2SStephen Warren false; \ 1029 501ebdf2SStephen Warren fi 1030 501ebdf2SStephen Warren 1031 47f15711SMasahiro Yamadaquiet_cmd_offsets = GEN $@ 1032 47f15711SMasahiro Yamada cmd_offsets = $(srctree)/tools/scripts/make-asm-offsets $< $@ 1033 47f15711SMasahiro Yamada 1034 47f15711SMasahiro Yamadainclude/generated/generic-asm-offsets.h: lib/asm-offsets.s 1035 47f15711SMasahiro Yamada $(call cmd,offsets) 1036 47f15711SMasahiro Yamada 1037 47f15711SMasahiro Yamadaquiet_cmd_asm-offsets.s = CC $@ 1038 47f15711SMasahiro Yamada cmd_asm-offsets.s = mkdir -p lib; \ 1039 16a354f9SWolfgang Denk $(CC) -DDO_DEPS_ONLY \ 1040 6825a95bSMasahiro Yamada $(c_flags) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \ 1041 47f15711SMasahiro Yamada -o $@ $< -c -S 1042 47f15711SMasahiro Yamada 1043 47f15711SMasahiro Yamadalib/asm-offsets.s: $(srctree)/lib/asm-offsets.c include/config.h 1044 47f15711SMasahiro Yamada $(call cmd,asm-offsets.s) 1045 16a354f9SWolfgang Denk 1046 9e414032SMasahiro Yamadainclude/generated/asm-offsets.h: $(CPUDIR)/$(SOC)/asm-offsets.s 1047 47f15711SMasahiro Yamada $(call cmd,offsets) 1048 a4814a69SStefano Babic 1049 47f15711SMasahiro Yamadaquiet_cmd_soc_asm-offsets.s = CC $@ 1050 47f15711SMasahiro Yamada cmd_soc_asm-offsets.s = mkdir -p $(CPUDIR)/$(SOC); \ 1051 9e414032SMasahiro Yamada if [ -f $(srctree)/$(CPUDIR)/$(SOC)/asm-offsets.c ];then \ 1052 a4814a69SStefano Babic $(CC) -DDO_DEPS_ONLY \ 1053 6825a95bSMasahiro Yamada $(c_flags) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \ 1054 9e414032SMasahiro Yamada -o $@ $(srctree)/$(CPUDIR)/$(SOC)/asm-offsets.c -c -S; \ 1055 a4814a69SStefano Babic else \ 1056 a4814a69SStefano Babic touch $@; \ 1057 a4814a69SStefano Babic fi 1058 a4814a69SStefano Babic 1059 47f15711SMasahiro Yamada$(CPUDIR)/$(SOC)/asm-offsets.s: include/config.h 1060 47f15711SMasahiro Yamada $(call cmd,soc_asm-offsets.s) 1061 47f15711SMasahiro Yamada 1062 7ebf7443Swdenk######################################################################### 1063 7ebf7443Swdenk 1064 54799e45SScott Wood# ARM relocations should all be R_ARM_RELATIVE (32-bit) or 1065 54799e45SScott Wood# R_AARCH64_RELATIVE (64-bit). 1066 9e414032SMasahiro Yamadacheckarmreloc: u-boot 1067 54799e45SScott Wood @RELOC="`$(CROSS_COMPILE)readelf -r -W $< | cut -d ' ' -f 4 | \ 1068 54799e45SScott Wood grep R_A | sort -u`"; \ 1069 54799e45SScott Wood if test "$$RELOC" != "R_ARM_RELATIVE" -a \ 1070 54799e45SScott Wood "$$RELOC" != "R_AARCH64_RELATIVE"; then \ 1071 54799e45SScott Wood echo "$< contains unexpected relocations: $$RELOC"; \ 1072 54799e45SScott Wood false; \ 1073 54799e45SScott Wood fi 1074 c37980c3SAlbert ARIBAUD 1075 28abd48fSIlya Yanok$(VERSION_FILE): 1076 14ce91b1SMike Frysinger @mkdir -p $(dir $(VERSION_FILE)) 1077 dd88ab32SMasahiro Yamada @( localvers='$(shell $(TOPDIR)/scripts/setlocalversion $(TOPDIR))' ; \ 1078 28abd48fSIlya Yanok printf '#define PLAIN_VERSION "%s%s"\n' \ 1079 28abd48fSIlya Yanok "$(U_BOOT_VERSION)" "$${localvers}" ; \ 1080 28abd48fSIlya Yanok printf '#define U_BOOT_VERSION "U-Boot %s%s"\n' \ 1081 28abd48fSIlya Yanok "$(U_BOOT_VERSION)" "$${localvers}" ; \ 1082 28abd48fSIlya Yanok ) > $@.tmp 1083 28abd48fSIlya Yanok @( printf '#define CC_VERSION_STRING "%s"\n' \ 1084 28abd48fSIlya Yanok '$(shell $(CC) --version | head -n 1)' )>> $@.tmp 1085 28abd48fSIlya Yanok @( printf '#define LD_VERSION_STRING "%s"\n' \ 1086 28abd48fSIlya Yanok '$(shell $(LD) -v | head -n 1)' )>> $@.tmp 1087 28abd48fSIlya Yanok @cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@ 1088 28abd48fSIlya Yanok 1089 249b53a6SLoïc Minier$(TIMESTAMP_FILE): 1090 249b53a6SLoïc Minier @mkdir -p $(dir $(TIMESTAMP_FILE)) 1091 a76406fbSLoïc Minier @LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"' > $@.tmp 1092 a76406fbSLoïc Minier @LC_ALL=C date +'#define U_BOOT_TIME "%T"' >> $@.tmp 1093 a76406fbSLoïc Minier @cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@ 1094 249b53a6SLoïc Minier 1095 0358df42SMike Frysingereasylogo env gdb: 1096 *3f76e984SMasahiro Yamada $(Q)$(MAKE) $(build)=tools/$@ 1097 940db16dSMasahiro Yamada 1098 0358df42SMike Frysingergdbtools: gdb 1099 0358df42SMike Frysinger 1100 30ff8918SMarek Vasutxmldocs pdfdocs psdocs htmldocs mandocs: tools/kernel-doc/docproc 1101 6825a95bSMasahiro Yamada $(Q)$(MAKE) U_BOOT_VERSION=$(U_BOOT_VERSION) $(build)=doc/DocBook $@ 1102 30ff8918SMarek Vasut 1103 249b53a6SLoïc Miniertools-all: easylogo env gdb $(VERSION_FILE) $(TIMESTAMP_FILE) 1104 6825a95bSMasahiro Yamada $(Q)$(MAKE) $(build)=tools HOST_TOOLS_ALL=y 1105 0358df42SMike Frysinger 1106 4e53a258SWolfgang Denk.PHONY : CHANGELOG 1107 4e53a258SWolfgang DenkCHANGELOG: 1108 b985b5d6SBen Warren git log --no-merges U-Boot-1_1_5.. | \ 1109 b985b5d6SBen Warren unexpand -a | sed -e 's/\s\s*$$//' > $@ 1110 4e53a258SWolfgang Denk 1111 0a823aa2SHarald Welteinclude/license.h: tools/bin2header COPYING 1112 0a823aa2SHarald Welte cat COPYING | gzip -9 -c | ./tools/bin2header license_gzip > include/license.h 1113 7ebf7443Swdenk######################################################################### 1114 7ebf7443Swdenk 1115 a6862bc1SWolfgang Denk 1116 3e38691eSwdenk######################################################################### 1117 7ebf7443Swdenk 1118 7ebf7443Swdenkclean: 1119 9e414032SMasahiro Yamada @rm -f examples/standalone/atmel_df_pow2 \ 1120 9e414032SMasahiro Yamada examples/standalone/hello_world \ 1121 9e414032SMasahiro Yamada examples/standalone/interrupt \ 1122 9e414032SMasahiro Yamada examples/standalone/mem_to_mem_idma2intr \ 1123 9e414032SMasahiro Yamada examples/standalone/sched \ 1124 9e414032SMasahiro Yamada $(addprefix examples/standalone/, smc91111_eeprom smc911x_eeprom) \ 1125 9e414032SMasahiro Yamada examples/standalone/test_burst \ 1126 9e414032SMasahiro Yamada examples/standalone/timer 1127 9e414032SMasahiro Yamada @rm -f $(addprefix examples/api/, demo demo.bin) 1128 9e414032SMasahiro Yamada @rm -f tools/bmp_logo tools/easylogo/easylogo \ 1129 9e414032SMasahiro Yamada tools/env/fw_printenv \ 1130 9e414032SMasahiro Yamada tools/envcrc \ 1131 9e414032SMasahiro Yamada $(addprefix tools/gdb/, gdbcont gdbsend) \ 1132 9e414032SMasahiro Yamada tools/gen_eth_addr tools/img2srec \ 1133 9e414032SMasahiro Yamada tools/dumpimage \ 1134 9e414032SMasahiro Yamada $(addprefix tools/, mkenvimage mkimage) \ 1135 9e414032SMasahiro Yamada tools/mpc86x_clk \ 1136 9e414032SMasahiro Yamada $(addprefix tools/, mk$(BOARD)spl mkexynosspl) \ 1137 9e414032SMasahiro Yamada tools/mxsboot \ 1138 9e414032SMasahiro Yamada tools/ncb tools/ubsha1 \ 1139 9e414032SMasahiro Yamada tools/kernel-doc/docproc \ 1140 9e414032SMasahiro Yamada tools/proftool 1141 9e414032SMasahiro Yamada @rm -f $(addprefix board/cray/L1/, bootscript.c bootscript.image) \ 1142 9e414032SMasahiro Yamada board/matrix_vision/*/bootscript.img \ 1143 9e414032SMasahiro Yamada spl/board/samsung/$(BOARD)/tools/mk$(BOARD)spl \ 1144 9e414032SMasahiro Yamada u-boot.lds \ 1145 9e414032SMasahiro Yamada $(addprefix arch/blackfin/cpu/, init.lds init.elf) 1146 9e414032SMasahiro Yamada @rm -f include/bmp_logo.h 1147 9e414032SMasahiro Yamada @rm -f include/bmp_logo_data.h 1148 9e414032SMasahiro Yamada @rm -f lib/asm-offsets.s 1149 9e414032SMasahiro Yamada @rm -f include/generated/asm-offsets.h 1150 9e414032SMasahiro Yamada @rm -f $(CPUDIR)/$(SOC)/asm-offsets.s 1151 d4abc757SPeter Tyser @rm -f $(TIMESTAMP_FILE) $(VERSION_FILE) 1152 9e414032SMasahiro Yamada @$(MAKE) -f $(srctree)/doc/DocBook/Makefile cleandocs 1153 ae6d1056SWolfgang Denk @find $(OBJTREE) -type f \ 1154 4a30f1e8STom Rini \( -name 'core' -o -name '*.bak' -o -name '*~' -o -name '*.su' \ 1155 6825a95bSMasahiro Yamada -o -name '*.o' -o -name '*.a' -o -name '*.exe' -o -name '*.cmd' \ 1156 71a988aaSTroy Kisky -o -name '*.cfgtmp' \) -print \ 1157 7ebf7443Swdenk | xargs rm -f 1158 7ebf7443Swdenk 1159 7390643fSMasahiro Yamadaclobber: clean 1160 734329f9SAndy Fleming @find $(OBJTREE) -type f \( -name '*.srec' \ 1161 734329f9SAndy Fleming -o -name '*.bin' -o -name u-boot.img \) \ 1162 734329f9SAndy Fleming -print0 | xargs -0 rm -f 1163 656de6b8SMasahiro Yamada @rm -f *.bak ctags etags TAGS \ 1164 9e414032SMasahiro Yamada cscope.* *.*~ 1165 9e414032SMasahiro Yamada @rm -f u-boot u-boot.map u-boot.hex $(ALL-y) 1166 9e414032SMasahiro Yamada @rm -f u-boot.kwb 1167 9e414032SMasahiro Yamada @rm -f u-boot.pbl 1168 9e414032SMasahiro Yamada @rm -f u-boot.imx 1169 9e414032SMasahiro Yamada @rm -f u-boot-with-spl.imx 1170 9e414032SMasahiro Yamada @rm -f u-boot-with-nand-spl.imx 1171 9e414032SMasahiro Yamada @rm -f u-boot.ubl 1172 9e414032SMasahiro Yamada @rm -f u-boot.ais 1173 9e414032SMasahiro Yamada @rm -f u-boot.dtb 1174 9e414032SMasahiro Yamada @rm -f u-boot.sb 1175 9e414032SMasahiro Yamada @rm -f u-boot.spr 1176 9e414032SMasahiro Yamada @rm -f $(addprefix nand_spl/, u-boot.lds u-boot.lst System.map) 1177 9e414032SMasahiro Yamada @rm -f $(addprefix nand_spl/, u-boot-nand_spl.lds u-boot-spl u-boot-spl.map) 1178 9e414032SMasahiro Yamada @rm -f $(addprefix spl/, u-boot-spl u-boot-spl.bin u-boot-spl.map) 1179 9e414032SMasahiro Yamada @rm -f spl/u-boot-spl.lds 1180 9e414032SMasahiro Yamada @rm -f $(addprefix tpl/, u-boot-tpl u-boot-tpl.bin u-boot-tpl.map) 1181 9e414032SMasahiro Yamada @rm -f tpl/u-boot-spl.lds 1182 9e414032SMasahiro Yamada @rm -f MLO MLO.byteswap 1183 9e414032SMasahiro Yamada @rm -f SPL 1184 9e414032SMasahiro Yamada @rm -f tools/xway-swap-bytes 1185 9e414032SMasahiro Yamada @rm -fr include/asm/proc include/asm/arch include/asm 1186 9e414032SMasahiro Yamada @rm -fr include/generated 1187 9e414032SMasahiro Yamada @[ ! -d nand_spl ] || find nand_spl -name "*" -type l -print | xargs rm -f 1188 9e414032SMasahiro Yamada @rm -f dts/*.tmp 1189 9e414032SMasahiro Yamada @rm -f $(addprefix spl/, u-boot-spl.ais, u-boot-spl-pad.ais) 1190 7ebf7443Swdenk 1191 433b2f1eSMasahiro Yamadamrproper: clobber 1192 433b2f1eSMasahiro Yamada @rm -f include/config.h include/config.mk \ 1193 433b2f1eSMasahiro Yamada board/*/config.tmp board/*/*/config.tmp \ 1194 433b2f1eSMasahiro Yamada include/autoconf.mk include/autoconf.mk.dep \ 1195 433b2f1eSMasahiro Yamada include/spl-autoconf.mk \ 1196 433b2f1eSMasahiro Yamada include/tpl-autoconf.mk 1197 433b2f1eSMasahiro Yamada 1198 433b2f1eSMasahiro Yamadadistclean: mrproper 1199 afd077bdSMike Frysingerifneq ($(OBJTREE),$(SRCTREE)) 1200 9e414032SMasahiro Yamada rm -rf * 1201 f9328639SMarian Balakowiczendif 1202 7ebf7443Swdenk 1203 7ebf7443Swdenkbackup: 1204 7ebf7443Swdenk F=`basename $(TOPDIR)` ; cd .. ; \ 1205 d6b93714SIlya Yanok gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F 1206 7ebf7443Swdenk 1207 7ebf7443Swdenk######################################################################### 1208 9e414032SMasahiro Yamada 1209 433b2f1eSMasahiro Yamadaendif #ifeq ($(config-targets),1) 1210 433b2f1eSMasahiro Yamadaendif #ifeq ($(mixed-targets),1) 1211 433b2f1eSMasahiro Yamada 1212 9e414032SMasahiro Yamadaendif # skip-makefile 1213 9e414032SMasahiro Yamada 1214 9e414032SMasahiro YamadaPHONY += FORCE 1215 9e414032SMasahiro YamadaFORCE: 1216 9e414032SMasahiro Yamada 1217 9e414032SMasahiro Yamada# Declare the contents of the .PHONY variable as phony. We keep that 1218 9e414032SMasahiro Yamada# information in a variable so we can use it in if_changed and friends. 1219 9e414032SMasahiro Yamada.PHONY: $(PHONY) 1220