userspc

Untitled

May 1st, 2019
266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 67.16 KB | None | 0 0
  1. # SPDX-License-Identifier: GPL-2.0+
  2.  
  3. VERSION = 2019
  4. PATCHLEVEL = 04
  5. SUBLEVEL =
  6. EXTRAVERSION = -rc2
  7. NAME =
  8.  
  9. # *DOCUMENTATION*
  10. # To see a list of typical targets execute "make help"
  11. # More info can be located in ./README
  12. # Comments in this file are targeted only to the developer, do not
  13. # expect to learn how to build the kernel reading this file.
  14.  
  15. # o Do not use make's built-in rules and variables
  16. # (this increases performance and avoids hard-to-debug behaviour);
  17. # o Look for make include files relative to root of kernel src
  18. MAKEFLAGS += -rR --include-dir=$(CURDIR)
  19.  
  20. # Avoid funny character set dependencies
  21. unexport LC_ALL
  22. LC_COLLATE=C
  23. LC_NUMERIC=C
  24. export LC_COLLATE LC_NUMERIC
  25.  
  26. # Avoid interference with shell env settings
  27. unexport GREP_OPTIONS
  28.  
  29. # We are using a recursive build, so we need to do a little thinking
  30. # to get the ordering right.
  31. #
  32. # Most importantly: sub-Makefiles should only ever modify files in
  33. # their own directory. If in some directory we have a dependency on
  34. # a file in another dir (which doesn't happen often, but it's often
  35. # unavoidable when linking the built-in.o targets which finally
  36. # turn into vmlinux), we will call a sub make in that other dir, and
  37. # after that we are sure that everything which is in that other dir
  38. # is now up to date.
  39. #
  40. # The only cases where we need to modify files which have global
  41. # effects are thus separated out and done before the recursive
  42. # descending is started. They are now explicitly listed as the
  43. # prepare rule.
  44.  
  45. # Beautify output
  46. # ---------------------------------------------------------------------------
  47. #
  48. # Normally, we echo the whole command before executing it. By making
  49. # that echo $($(quiet)$(cmd)), we now have the possibility to set
  50. # $(quiet) to choose other forms of output instead, e.g.
  51. #
  52. # quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@
  53. # cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<
  54. #
  55. # If $(quiet) is empty, the whole command will be printed.
  56. # If it is set to "quiet_", only the short version will be printed.
  57. # If it is set to "silent_", nothing will be printed at all, since
  58. # the variable $(silent_cmd_cc_o_c) doesn't exist.
  59. #
  60. # A simple variant is to prefix commands with $(Q) - that's useful
  61. # for commands that shall be hidden in non-verbose mode.
  62. #
  63. # $(Q)ln $@ :<
  64. #
  65. # If KBUILD_VERBOSE equals 0 then the above command will be hidden.
  66. # If KBUILD_VERBOSE equals 1 then the above command is displayed.
  67. #
  68. # To put more focus on warnings, be less verbose as default
  69. # Use 'make V=1' to see the full commands
  70.  
  71. ifeq ("$(origin V)", "command line")
  72. KBUILD_VERBOSE = $(V)
  73. endif
  74. ifndef KBUILD_VERBOSE
  75. KBUILD_VERBOSE = 0
  76. endif
  77.  
  78. ifeq ($(KBUILD_VERBOSE),1)
  79. quiet =
  80. Q =
  81. else
  82. quiet=quiet_
  83. Q = @
  84. endif
  85.  
  86. # If the user is running make -s (silent mode), suppress echoing of
  87. # commands
  88.  
  89. ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4
  90. ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),)
  91. quiet=silent_
  92. endif
  93. else # make-3.8x
  94. ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
  95. quiet=silent_
  96. endif
  97. endif
  98.  
  99. export quiet Q KBUILD_VERBOSE
  100.  
  101. # kbuild supports saving output files in a separate directory.
  102. # To locate output files in a separate directory two syntaxes are supported.
  103. # In both cases the working directory must be the root of the kernel src.
  104. # 1) O=
  105. # Use "make O=dir/to/store/output/files/"
  106. #
  107. # 2) Set KBUILD_OUTPUT
  108. # Set the environment variable KBUILD_OUTPUT to point to the directory
  109. # where the output files shall be placed.
  110. # export KBUILD_OUTPUT=dir/to/store/output/files/
  111. # make
  112. #
  113. # The O= assignment takes precedence over the KBUILD_OUTPUT environment
  114. # variable.
  115.  
  116. # KBUILD_SRC is set on invocation of make in OBJ directory
  117. # KBUILD_SRC is not intended to be used by the regular user (for now)
  118. ifeq ($(KBUILD_SRC),)
  119.  
  120. # OK, Make called in directory where kernel src resides
  121. # Do we want to locate output files in a separate directory?
  122. ifeq ("$(origin O)", "command line")
  123. KBUILD_OUTPUT := $(O)
  124. endif
  125.  
  126. # That's our default target when none is given on the command line
  127. PHONY := _all
  128. _all:
  129.  
  130. # Cancel implicit rules on top Makefile
  131. $(CURDIR)/Makefile Makefile: ;
  132.  
  133. ifneq ($(KBUILD_OUTPUT),)
  134. # Invoke a second make in the output directory, passing relevant variables
  135. # check that the output directory actually exists
  136. saved-output := $(KBUILD_OUTPUT)
  137. KBUILD_OUTPUT := $(shell mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) \
  138. && /bin/pwd)
  139. $(if $(KBUILD_OUTPUT),, \
  140. $(error failed to create output directory "$(saved-output)"))
  141.  
  142. PHONY += $(MAKECMDGOALS) sub-make
  143.  
  144. $(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make
  145. @:
  146.  
  147. sub-make: FORCE
  148. $(Q)$(MAKE) -C $(KBUILD_OUTPUT) KBUILD_SRC=$(CURDIR) \
  149. -f $(CURDIR)/Makefile $(filter-out _all sub-make,$(MAKECMDGOALS))
  150.  
  151. # Leave processing to above invocation of make
  152. skip-makefile := 1
  153. endif # ifneq ($(KBUILD_OUTPUT),)
  154. endif # ifeq ($(KBUILD_SRC),)
  155.  
  156. # We process the rest of the Makefile if this is the final invocation of make
  157. ifeq ($(skip-makefile),)
  158.  
  159. # Do not print "Entering directory ...",
  160. # but we want to display it when entering to the output directory
  161. # so that IDEs/editors are able to understand relative filenames.
  162. MAKEFLAGS += --no-print-directory
  163.  
  164. # Call a source code checker (by default, "sparse") as part of the
  165. # C compilation.
  166. #
  167. # Use 'make C=1' to enable checking of only re-compiled files.
  168. # Use 'make C=2' to enable checking of *all* source files, regardless
  169. # of whether they are re-compiled or not.
  170. #
  171. # See the file "Documentation/sparse.txt" for more details, including
  172. # where to get the "sparse" utility.
  173.  
  174. ifeq ("$(origin C)", "command line")
  175. KBUILD_CHECKSRC = $(C)
  176. endif
  177. ifndef KBUILD_CHECKSRC
  178. KBUILD_CHECKSRC = 0
  179. endif
  180.  
  181. # Use make M=dir to specify directory of external module to build
  182. # Old syntax make ... SUBDIRS=$PWD is still supported
  183. # Setting the environment variable KBUILD_EXTMOD take precedence
  184. ifdef SUBDIRS
  185. KBUILD_EXTMOD ?= $(SUBDIRS)
  186. endif
  187.  
  188. ifeq ("$(origin M)", "command line")
  189. KBUILD_EXTMOD := $(M)
  190. endif
  191.  
  192. # If building an external module we do not care about the all: rule
  193. # but instead _all depend on modules
  194. PHONY += all
  195. ifeq ($(KBUILD_EXTMOD),)
  196. _all: all
  197. else
  198. _all: modules
  199. endif
  200.  
  201. ifeq ($(KBUILD_SRC),)
  202. # building in the source tree
  203. srctree := .
  204. else
  205. ifeq ($(KBUILD_SRC)/,$(dir $(CURDIR)))
  206. # building in a subdirectory of the source tree
  207. srctree := ..
  208. else
  209. srctree := $(KBUILD_SRC)
  210. endif
  211. endif
  212. objtree := .
  213. src := $(srctree)
  214. obj := $(objtree)
  215.  
  216. VPATH := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD))
  217.  
  218. export srctree objtree VPATH
  219.  
  220. # Make sure CDPATH settings don't interfere
  221. unexport CDPATH
  222.  
  223. #########################################################################
  224.  
  225. HOSTARCH := $(shell uname -m | \
  226. sed -e s/i.86/x86/ \
  227. -e s/sun4u/sparc64/ \
  228. -e s/arm.*/arm/ \
  229. -e s/sa110/arm/ \
  230. -e s/ppc64/powerpc/ \
  231. -e s/ppc/powerpc/ \
  232. -e s/macppc/powerpc/\
  233. -e s/sh.*/sh/)
  234.  
  235. HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
  236. sed -e 's/\(cygwin\).*/cygwin/')
  237.  
  238. export HOSTARCH HOSTOS
  239.  
  240. #########################################################################
  241.  
  242. # set default to nothing for native builds
  243. ifeq ($(HOSTARCH),$(ARCH))
  244. CROSS_COMPILE ?=
  245. endif
  246.  
  247. KCONFIG_CONFIG ?= .config
  248. export KCONFIG_CONFIG
  249.  
  250. # SHELL used by kbuild
  251. CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
  252. else if [ -x /bin/bash ]; then echo /bin/bash; \
  253. else echo sh; fi ; fi)
  254.  
  255. HOSTCC = cc
  256. HOSTCXX = c++
  257. HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer \
  258. $(if $(CONFIG_TOOLS_DEBUG),-g)
  259. HOSTCXXFLAGS = -O2
  260.  
  261. # With the move to GCC 6, we have implicitly upgraded our language
  262. # standard to GNU11 (see https://gcc.gnu.org/gcc-5/porting_to.html).
  263. # Some Linux distributions (including RHEL7, SLES13, Debian 8) still
  264. # have older compilers as their default, so we make it explicit for
  265. # these that our host tools are GNU11 (i.e. C11 w/ GNU extensions).
  266. CSTD_FLAG := -std=gnu11
  267. ifeq ($(HOSTOS),linux)
  268. HOSTCFLAGS += $(CSTD_FLAG)
  269. endif
  270.  
  271. ifeq ($(HOSTOS),cygwin)
  272. HOSTCFLAGS += -ansi
  273. endif
  274.  
  275. # Mac OS X / Darwin's C preprocessor is Apple specific. It
  276. # generates numerous errors and warnings. We want to bypass it
  277. # and use GNU C's cpp. To do this we pass the -traditional-cpp
  278. # option to the compiler. Note that the -traditional-cpp flag
  279. # DOES NOT have the same semantics as GNU C's flag, all it does
  280. # is invoke the GNU preprocessor in stock ANSI/ISO C fashion.
  281. #
  282. # Apple's linker is similar, thanks to the new 2 stage linking
  283. # multiple symbol definitions are treated as errors, hence the
  284. # -multiply_defined suppress option to turn off this error.
  285. #
  286. ifeq ($(HOSTOS),darwin)
  287. # get major and minor product version (e.g. '10' and '6' for Snow Leopard)
  288. DARWIN_MAJOR_VERSION = $(shell sw_vers -productVersion | cut -f 1 -d '.')
  289. DARWIN_MINOR_VERSION = $(shell sw_vers -productVersion | cut -f 2 -d '.')
  290.  
  291. os_x_before = $(shell if [ $(DARWIN_MAJOR_VERSION) -le $(1) -a \
  292. $(DARWIN_MINOR_VERSION) -le $(2) ] ; then echo "$(3)"; else echo "$(4)"; fi ;)
  293.  
  294. # Snow Leopards build environment has no longer restrictions as described above
  295. HOSTCC = $(call os_x_before, 10, 5, "cc", "gcc")
  296. HOSTCFLAGS += $(call os_x_before, 10, 4, "-traditional-cpp")
  297. HOSTLDFLAGS += $(call os_x_before, 10, 5, "-multiply_defined suppress")
  298.  
  299. # since Lion (10.7) ASLR is on by default, but we use linker generated lists
  300. # in some host tools which is a problem then ... so disable ASLR for these
  301. # tools
  302. HOSTLDFLAGS += $(call os_x_before, 10, 7, "", "-Xlinker -no_pie")
  303. endif
  304.  
  305. # Decide whether to build built-in, modular, or both.
  306. # Normally, just do built-in.
  307.  
  308. KBUILD_MODULES :=
  309. KBUILD_BUILTIN := 1
  310.  
  311. # If we have only "make modules", don't compile built-in objects.
  312. # When we're building modules with modversions, we need to consider
  313. # the built-in objects during the descend as well, in order to
  314. # make sure the checksums are up to date before we record them.
  315.  
  316. ifeq ($(MAKECMDGOALS),modules)
  317. KBUILD_BUILTIN := $(if $(CONFIG_MODVERSIONS),1)
  318. endif
  319.  
  320. # If we have "make <whatever> modules", compile modules
  321. # in addition to whatever we do anyway.
  322. # Just "make" or "make all" shall build modules as well
  323.  
  324. # U-Boot does not need modules
  325. #ifneq ($(filter all _all modules,$(MAKECMDGOALS)),)
  326. # KBUILD_MODULES := 1
  327. #endif
  328.  
  329. #ifeq ($(MAKECMDGOALS),)
  330. # KBUILD_MODULES := 1
  331. #endif
  332.  
  333. export KBUILD_MODULES KBUILD_BUILTIN
  334. export KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD
  335.  
  336. # We need some generic definitions (do not try to remake the file).
  337. scripts/Kbuild.include: ;
  338. include scripts/Kbuild.include
  339.  
  340. # Make variables (CC, etc...)
  341.  
  342. AS = $(CROSS_COMPILE)as
  343. # Always use GNU ld
  344. ifneq ($(shell $(CROSS_COMPILE)ld.bfd -v 2> /dev/null),)
  345. LD = $(CROSS_COMPILE)ld.bfd
  346. else
  347. LD = $(CROSS_COMPILE)ld
  348. endif
  349. CC = $(CROSS_COMPILE)gcc
  350. CPP = $(CC) -E
  351. AR = $(CROSS_COMPILE)ar
  352. NM = $(CROSS_COMPILE)nm
  353. LDR = $(CROSS_COMPILE)ldr
  354. STRIP = $(CROSS_COMPILE)strip
  355. OBJCOPY = $(CROSS_COMPILE)objcopy
  356. OBJDUMP = $(CROSS_COMPILE)objdump
  357. LEX = flex
  358. YACC = bison
  359. AWK = awk
  360. PERL = perl
  361. PYTHON ?= python
  362. PYTHON2 = python2
  363. PYTHON3 = python3
  364. DTC ?= $(objtree)/scripts/dtc/dtc
  365. CHECK = sparse
  366.  
  367. CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
  368. -Wbitwise -Wno-return-void -D__CHECK_ENDIAN__ $(CF)
  369.  
  370. KBUILD_CPPFLAGS := -D__KERNEL__ -D__UBOOT__
  371.  
  372. KBUILD_CFLAGS := -Wall -Wstrict-prototypes \
  373. -Wno-format-security \
  374. -fno-builtin -ffreestanding $(CSTD_FLAG)
  375. KBUILD_CFLAGS += -fshort-wchar -fno-strict-aliasing
  376. KBUILD_AFLAGS := -D__ASSEMBLY__
  377.  
  378. # Don't generate position independent code
  379. KBUILD_CFLAGS += $(call cc-option,-fno-PIE)
  380. KBUILD_AFLAGS += $(call cc-option,-fno-PIE)
  381.  
  382. # Read UBOOTRELEASE from include/config/uboot.release (if it exists)
  383. UBOOTRELEASE = $(shell cat include/config/uboot.release 2> /dev/null)
  384. UBOOTVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)
  385.  
  386. export VERSION PATCHLEVEL SUBLEVEL UBOOTRELEASE UBOOTVERSION
  387. export ARCH CPU BOARD VENDOR SOC CPUDIR BOARDDIR
  388. export CONFIG_SHELL HOSTCC HOSTCFLAGS HOSTLDFLAGS CROSS_COMPILE AS LD CC
  389. export CPP AR NM LDR STRIP OBJCOPY OBJDUMP
  390. export MAKE LEX YACC AWK PERL PYTHON PYTHON2 PYTHON3
  391. export HOSTCXX HOSTCXXFLAGS CHECK CHECKFLAGS DTC DTC_FLAGS
  392.  
  393. export KBUILD_CPPFLAGS NOSTDINC_FLAGS UBOOTINCLUDE OBJCOPYFLAGS LDFLAGS
  394. export KBUILD_CFLAGS KBUILD_AFLAGS
  395.  
  396. # When compiling out-of-tree modules, put MODVERDIR in the module
  397. # tree rather than in the kernel tree. The kernel tree might
  398. # even be read-only.
  399. export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_versions
  400.  
  401. # Files to ignore in find ... statements
  402.  
  403. export RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o \
  404. -name CVS -o -name .pc -o -name .hg -o -name .git \) \
  405. -prune -o
  406. export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \
  407. --exclude CVS --exclude .pc --exclude .hg --exclude .git
  408.  
  409. # ===========================================================================
  410. # Rules shared between *config targets and build targets
  411.  
  412. # Basic helpers built in scripts/
  413. PHONY += scripts_basic
  414. scripts_basic:
  415. $(Q)$(MAKE) $(build)=scripts/basic
  416. $(Q)rm -f .tmp_quiet_recordmcount
  417.  
  418. # To avoid any implicit rule to kick in, define an empty command.
  419. scripts/basic/%: scripts_basic ;
  420.  
  421. PHONY += outputmakefile
  422. # outputmakefile generates a Makefile in the output directory, if using a
  423. # separate output directory. This allows convenient use of make in the
  424. # output directory.
  425. outputmakefile:
  426. ifneq ($(KBUILD_SRC),)
  427. $(Q)ln -fsn $(srctree) source
  428. $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile \
  429. $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL)
  430. endif
  431.  
  432. # To make sure we do not include .config for any of the *config targets
  433. # catch them early, and hand them over to scripts/kconfig/Makefile
  434. # It is allowed to specify more targets when calling make, including
  435. # mixing *config targets and build targets.
  436. # For example 'make oldconfig all'.
  437. # Detect when mixed targets is specified, and make a second invocation
  438. # of make so .config is not included in this case either (for *config).
  439.  
  440. version_h := include/generated/version_autogenerated.h
  441. timestamp_h := include/generated/timestamp_autogenerated.h
  442. defaultenv_h := include/generated/defaultenv_autogenerated.h
  443.  
  444. no-dot-config-targets := clean clobber mrproper distclean \
  445. help %docs check% coccicheck \
  446. ubootversion backup tests check qcheck
  447.  
  448. config-targets := 0
  449. mixed-targets := 0
  450. dot-config := 1
  451.  
  452. ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
  453. ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
  454. dot-config := 0
  455. endif
  456. endif
  457.  
  458. ifeq ($(KBUILD_EXTMOD),)
  459. ifneq ($(filter config %config,$(MAKECMDGOALS)),)
  460. config-targets := 1
  461. ifneq ($(words $(MAKECMDGOALS)),1)
  462. mixed-targets := 1
  463. endif
  464. endif
  465. endif
  466.  
  467. ifeq ($(mixed-targets),1)
  468. # ===========================================================================
  469. # We're called with mixed targets (*config and build targets).
  470. # Handle them one by one.
  471.  
  472. PHONY += $(MAKECMDGOALS) __build_one_by_one
  473.  
  474. $(filter-out __build_one_by_one, $(MAKECMDGOALS)): __build_one_by_one
  475. @:
  476.  
  477. __build_one_by_one:
  478. $(Q)set -e; \
  479. for i in $(MAKECMDGOALS); do \
  480. $(MAKE) -f $(srctree)/Makefile $$i; \
  481. done
  482.  
  483. else
  484. ifeq ($(config-targets),1)
  485. # ===========================================================================
  486. # *config targets only - make sure prerequisites are updated, and descend
  487. # in scripts/kconfig to make the *config target
  488.  
  489. KBUILD_DEFCONFIG := sandbox_defconfig
  490. export KBUILD_DEFCONFIG KBUILD_KCONFIG
  491.  
  492. config: scripts_basic outputmakefile FORCE
  493. $(Q)$(MAKE) $(build)=scripts/kconfig $@
  494.  
  495. %config: scripts_basic outputmakefile FORCE
  496. $(Q)$(MAKE) $(build)=scripts/kconfig $@
  497.  
  498. else
  499. # ===========================================================================
  500. # Build targets only - this includes vmlinux, arch specific targets, clean
  501. # targets and others. In general all targets except *config targets.
  502.  
  503. # Additional helpers built in scripts/
  504. # Carefully list dependencies so we do not try to build scripts twice
  505. # in parallel
  506. PHONY += scripts
  507. scripts: scripts_basic include/config/auto.conf
  508. $(Q)$(MAKE) $(build)=$(@)
  509.  
  510. ifeq ($(dot-config),1)
  511. # Read in config
  512. -include include/config/auto.conf
  513.  
  514. # Read in dependencies to all Kconfig* files, make sure to run
  515. # oldconfig if changes are detected.
  516. -include include/config/auto.conf.cmd
  517.  
  518. # To avoid any implicit rule to kick in, define an empty command
  519. $(KCONFIG_CONFIG) include/config/auto.conf.cmd: ;
  520.  
  521. # If .config is newer than include/config/auto.conf, someone tinkered
  522. # with it and forgot to run make oldconfig.
  523. # if auto.conf.cmd is missing then we are probably in a cleaned tree so
  524. # we execute the config step to be sure to catch updated Kconfig files
  525. include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd
  526. $(Q)$(MAKE) -f $(srctree)/Makefile syncconfig
  527. @# If the following part fails, include/config/auto.conf should be
  528. @# deleted so "make silentoldconfig" will be re-run on the next build.
  529. $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.autoconf || \
  530. { rm -f include/config/auto.conf; false; }
  531. @# include/config.h has been updated after "make silentoldconfig".
  532. @# We need to touch include/config/auto.conf so it gets newer
  533. @# than include/config.h.
  534. @# Otherwise, 'make silentoldconfig' would be invoked twice.
  535. $(Q)touch include/config/auto.conf
  536.  
  537. u-boot.cfg spl/u-boot.cfg tpl/u-boot.cfg:
  538. $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.autoconf $(@)
  539.  
  540. -include include/autoconf.mk
  541. -include include/autoconf.mk.dep
  542.  
  543. # We want to include arch/$(ARCH)/config.mk only when include/config/auto.conf
  544. # is up-to-date. When we switch to a different board configuration, old CONFIG
  545. # macros are still remaining in include/config/auto.conf. Without the following
  546. # gimmick, wrong config.mk would be included leading nasty warnings/errors.
  547. ifneq ($(wildcard $(KCONFIG_CONFIG)),)
  548. ifneq ($(wildcard include/config/auto.conf),)
  549. autoconf_is_old := $(shell find . -path ./$(KCONFIG_CONFIG) -newer \
  550. include/config/auto.conf)
  551. ifeq ($(autoconf_is_old),)
  552. include config.mk
  553. include arch/$(ARCH)/Makefile
  554. endif
  555. endif
  556. endif
  557.  
  558. # These are set by the arch-specific config.mk. Make sure they are exported
  559. # so they can be used when building an EFI application.
  560. export EFI_LDS # Filename of EFI link script in arch/$(ARCH)/lib
  561. export EFI_CRT0 # Filename of EFI CRT0 in arch/$(ARCH)/lib
  562. export EFI_RELOC # Filename of EFU relocation code in arch/$(ARCH)/lib
  563. export CFLAGS_EFI # Compiler flags to add when building EFI app
  564. export CFLAGS_NON_EFI # Compiler flags to remove when building EFI app
  565. export EFI_TARGET # binutils target if EFI is natively supported
  566.  
  567. # If board code explicitly specified LDSCRIPT or CONFIG_SYS_LDSCRIPT, use
  568. # that (or fail if absent). Otherwise, search for a linker script in a
  569. # standard location.
  570.  
  571. ifndef LDSCRIPT
  572. #LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot.lds.debug
  573. ifdef CONFIG_SYS_LDSCRIPT
  574. # need to strip off double quotes
  575. LDSCRIPT := $(srctree)/$(CONFIG_SYS_LDSCRIPT:"%"=%)
  576. endif
  577. endif
  578.  
  579. # If there is no specified link script, we look in a number of places for it
  580. ifndef LDSCRIPT
  581. ifeq ($(wildcard $(LDSCRIPT)),)
  582. LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot.lds
  583. endif
  584. ifeq ($(wildcard $(LDSCRIPT)),)
  585. LDSCRIPT := $(srctree)/$(CPUDIR)/u-boot.lds
  586. endif
  587. ifeq ($(wildcard $(LDSCRIPT)),)
  588. LDSCRIPT := $(srctree)/arch/$(ARCH)/cpu/u-boot.lds
  589. endif
  590. endif
  591.  
  592. else
  593. # Dummy target needed, because used as prerequisite
  594. include/config/auto.conf: ;
  595. endif # $(dot-config)
  596.  
  597. #
  598. # Xtensa linker script cannot be preprocessed with -ansi because of
  599. # preprocessor operations on strings that don't make C identifiers.
  600. #
  601. ifeq ($(CONFIG_XTENSA),)
  602. LDPPFLAGS += -ansi
  603. endif
  604.  
  605. ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
  606. KBUILD_CFLAGS += -Os
  607. else
  608. KBUILD_CFLAGS += -O2
  609. endif
  610.  
  611. KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
  612. KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks)
  613.  
  614. # change __FILE__ to the relative path from the srctree
  615. KBUILD_CFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=)
  616.  
  617. KBUILD_CFLAGS += -g
  618. # $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g<format>
  619. # option to the assembler.
  620. KBUILD_AFLAGS += -g
  621.  
  622. # Report stack usage if supported
  623. # ARC tools based on GCC 7.1 has an issue with stack usage
  624. # with naked functions, see commit message for more details
  625. ifndef CONFIG_ARC
  626. ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-stack-usage.sh $(CC)),y)
  627. KBUILD_CFLAGS += -fstack-usage
  628. endif
  629. endif
  630.  
  631. KBUILD_CFLAGS += $(call cc-option,-Wno-format-nonliteral)
  632. ifeq ($(cc-name),clang)
  633. KBUILD_CPPFLAGS += $(call cc-option,-Qunused-arguments,)
  634. KBUILD_CFLAGS += $(call cc-disable-warning, format-invalid-specifier)
  635. KBUILD_CFLAGS += $(call cc-disable-warning, gnu)
  636. KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
  637. KBUILD_CFLAGS += $(call cc-option, -fcatch-undefined-behavior)
  638. endif
  639.  
  640. # turn jbsr into jsr for m68k
  641. ifeq ($(ARCH),m68k)
  642. ifeq ($(findstring 3.4,$(shell $(CC) --version)),3.4)
  643. KBUILD_AFLAGS += -Wa,-gstabs,-S
  644. endif
  645. endif
  646.  
  647. # Prohibit date/time macros, which would make the build non-deterministic
  648. KBUILD_CFLAGS += $(call cc-option,-Werror=date-time)
  649.  
  650. include scripts/Makefile.extrawarn
  651.  
  652. # Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments
  653. KBUILD_CPPFLAGS += $(KCPPFLAGS)
  654. KBUILD_AFLAGS += $(KAFLAGS)
  655. KBUILD_CFLAGS += $(KCFLAGS)
  656.  
  657. # Use UBOOTINCLUDE when you must reference the include/ directory.
  658. # Needed to be compatible with the O= option
  659. UBOOTINCLUDE := \
  660. -Iinclude \
  661. $(if $(KBUILD_SRC), -I$(srctree)/include) \
  662. $(if $(CONFIG_$(SPL_)SYS_THUMB_BUILD), \
  663. $(if $(CONFIG_HAS_THUMB2),, \
  664. -I$(srctree)/arch/$(ARCH)/thumb1/include),) \
  665. -I$(srctree)/arch/$(ARCH)/include \
  666. -include $(srctree)/include/linux/kconfig.h
  667.  
  668. NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
  669. CHECKFLAGS += $(NOSTDINC_FLAGS)
  670.  
  671. # FIX ME
  672. cpp_flags := $(KBUILD_CPPFLAGS) $(PLATFORM_CPPFLAGS) $(UBOOTINCLUDE) \
  673. $(NOSTDINC_FLAGS)
  674. c_flags := $(KBUILD_CFLAGS) $(cpp_flags)
  675.  
  676. #########################################################################
  677. # U-Boot objects....order is important (i.e. start must be first)
  678.  
  679. HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n)
  680.  
  681. libs-y += lib/
  682. libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/
  683. libs-$(CONFIG_OF_EMBED) += dts/
  684. libs-y += fs/
  685. libs-y += net/
  686. libs-y += disk/
  687. libs-y += drivers/
  688. libs-y += drivers/dma/
  689. libs-y += drivers/gpio/
  690. libs-y += drivers/i2c/
  691. libs-y += drivers/mtd/
  692. libs-$(CONFIG_CMD_NAND) += drivers/mtd/nand/raw/
  693. libs-y += drivers/mtd/onenand/
  694. libs-$(CONFIG_CMD_UBI) += drivers/mtd/ubi/
  695. libs-y += drivers/mtd/spi/
  696. libs-y += drivers/net/
  697. libs-y += drivers/net/phy/
  698. libs-y += drivers/power/ \
  699. drivers/power/domain/ \
  700. drivers/power/fuel_gauge/ \
  701. drivers/power/mfd/ \
  702. drivers/power/pmic/ \
  703. drivers/power/battery/ \
  704. drivers/power/regulator/
  705. libs-y += drivers/spi/
  706. libs-$(CONFIG_FMAN_ENET) += drivers/net/fm/
  707. libs-$(CONFIG_SYS_FSL_DDR) += drivers/ddr/fsl/
  708. libs-$(CONFIG_SYS_FSL_MMDC) += drivers/ddr/fsl/
  709. libs-$(CONFIG_ALTERA_SDRAM) += drivers/ddr/altera/
  710. libs-y += drivers/serial/
  711. libs-y += drivers/usb/dwc3/
  712. libs-y += drivers/usb/common/
  713. libs-y += drivers/usb/emul/
  714. libs-y += drivers/usb/eth/
  715. libs-$(CONFIG_USB_GADGET) += drivers/usb/gadget/
  716. libs-$(CONFIG_USB_GADGET) += drivers/usb/gadget/udc/
  717. libs-y += drivers/usb/host/
  718. libs-y += drivers/usb/musb/
  719. libs-y += drivers/usb/musb-new/
  720. libs-y += drivers/usb/phy/
  721. libs-y += drivers/usb/ulpi/
  722. libs-y += cmd/
  723. libs-y += common/
  724. libs-y += env/
  725. libs-$(CONFIG_API) += api/
  726. libs-$(CONFIG_HAS_POST) += post/
  727. libs-$(CONFIG_UNIT_TEST) += test/ test/dm/
  728. libs-$(CONFIG_UT_ENV) += test/env/
  729. libs-$(CONFIG_UT_OVERLAY) += test/overlay/
  730.  
  731. libs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/)
  732.  
  733. libs-y := $(sort $(libs-y))
  734.  
  735. u-boot-dirs := $(patsubst %/,%,$(filter %/, $(libs-y))) tools examples
  736.  
  737. u-boot-alldirs := $(sort $(u-boot-dirs) $(patsubst %/,%,$(filter %/, $(libs-))))
  738.  
  739. libs-y := $(patsubst %/, %/built-in.o, $(libs-y))
  740.  
  741. u-boot-init := $(head-y)
  742. u-boot-main := $(libs-y)
  743.  
  744.  
  745. # Add GCC lib
  746. ifeq ($(CONFIG_USE_PRIVATE_LIBGCC),y)
  747. PLATFORM_LIBGCC = arch/$(ARCH)/lib/lib.a
  748. else
  749. PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(c_flags) -print-libgcc-file-name`) -lgcc
  750. endif
  751. PLATFORM_LIBS += $(PLATFORM_LIBGCC)
  752.  
  753. ifdef CONFIG_CC_COVERAGE
  754. KBUILD_CFLAGS += --coverage
  755. PLATFORM_LIBGCC += -lgcov
  756. endif
  757.  
  758. export PLATFORM_LIBS
  759. export PLATFORM_LIBGCC
  760.  
  761. # Special flags for CPP when processing the linker script.
  762. # Pass the version down so we can handle backwards compatibility
  763. # on the fly.
  764. LDPPFLAGS += \
  765. -include $(srctree)/include/u-boot/u-boot.lds.h \
  766. -DCPUDIR=$(CPUDIR) \
  767. $(shell $(LD) --version | \
  768. sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p')
  769.  
  770. #########################################################################
  771. #########################################################################
  772.  
  773. ifneq ($(CONFIG_BOARD_SIZE_LIMIT),)
  774. BOARD_SIZE_CHECK = \
  775. @actual=`wc -c $@ | awk '{print $$1}'`; \
  776. limit=`printf "%d" $(CONFIG_BOARD_SIZE_LIMIT)`; \
  777. if test $$actual -gt $$limit; then \
  778. echo "$@ exceeds file size limit:" >&2 ; \
  779. echo " limit: $$limit bytes" >&2 ; \
  780. echo " actual: $$actual bytes" >&2 ; \
  781. echo " excess: $$((actual - limit)) bytes" >&2; \
  782. exit 1; \
  783. fi
  784. else
  785. BOARD_SIZE_CHECK =
  786. endif
  787.  
  788. # Statically apply RELA-style relocations (currently arm64 only)
  789. # This is useful for arm64 where static relocation needs to be performed on
  790. # the raw binary, but certain simulators only accept an ELF file (but don't
  791. # do the relocation).
  792. ifneq ($(CONFIG_STATIC_RELA),)
  793. # $(1) is u-boot ELF, $(2) is u-boot bin, $(3) is text base
  794. DO_STATIC_RELA = \
  795. start=$$($(NM) $(1) | grep __rel_dyn_start | cut -f 1 -d ' '); \
  796. end=$$($(NM) $(1) | grep __rel_dyn_end | cut -f 1 -d ' '); \
  797. tools/relocate-rela $(2) $(3) $$start $$end
  798. else
  799. DO_STATIC_RELA =
  800. endif
  801.  
  802. # Always append ALL so that arch config.mk's can add custom ones
  803. ALL-y += u-boot.srec u-boot.bin u-boot.sym System.map binary_size_check
  804.  
  805. ALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin
  806. ifeq ($(CONFIG_SPL_FSL_PBL),y)
  807. ALL-$(CONFIG_RAMBOOT_PBL) += u-boot-with-spl-pbl.bin
  808. else
  809. ifneq ($(CONFIG_SECURE_BOOT), y)
  810. # For Secure Boot The Image needs to be signed and Header must also
  811. # be included. So The image has to be built explicitly
  812. ALL-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl
  813. endif
  814. endif
  815. ALL-$(CONFIG_SPL) += spl/u-boot-spl.bin
  816. ifeq ($(CONFIG_MX6)$(CONFIG_SECURE_BOOT), yy)
  817. ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot-ivt.img
  818. else
  819. ifeq ($(CONFIG_MX7)$(CONFIG_SECURE_BOOT), yy)
  820. ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot-ivt.img
  821. else
  822. ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img
  823. endif
  824. endif
  825. ALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin
  826. ALL-$(CONFIG_OF_SEPARATE) += u-boot.dtb
  827. ifeq ($(CONFIG_SPL_FRAMEWORK),y)
  828. ALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb.img
  829. endif
  830. ALL-$(CONFIG_OF_HOSTFILE) += u-boot.dtb
  831. ifneq ($(CONFIG_SPL_TARGET),)
  832. ALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%)
  833. endif
  834. ALL-$(CONFIG_REMAKE_ELF) += u-boot.elf
  835. ALL-$(CONFIG_EFI_APP) += u-boot-app.efi
  836. ALL-$(CONFIG_EFI_STUB) += u-boot-payload.efi
  837.  
  838. ifneq ($(BUILD_ROM)$(CONFIG_BUILD_ROM),)
  839. ALL-$(CONFIG_X86_RESET_VECTOR) += u-boot.rom
  840. endif
  841.  
  842. # Build a combined spl + u-boot image for sunxi
  843. ifeq ($(CONFIG_ARCH_SUNXI)$(CONFIG_SPL),yy)
  844. ALL-y += u-boot-sunxi-with-spl.bin
  845. endif
  846.  
  847. # enable combined SPL/u-boot/dtb rules for tegra
  848. ifeq ($(CONFIG_TEGRA)$(CONFIG_SPL),yy)
  849. ALL-y += u-boot-tegra.bin u-boot-nodtb-tegra.bin
  850. ALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb-tegra.bin
  851. endif
  852.  
  853. ALL-$(CONFIG_ARCH_MEDIATEK) += u-boot-mtk.bin
  854.  
  855. # Add optional build target if defined in board/cpu/soc headers
  856. ifneq ($(CONFIG_BUILD_TARGET),)
  857. ALL-y += $(CONFIG_BUILD_TARGET:"%"=%)
  858. endif
  859.  
  860. ifneq ($(CONFIG_SYS_INIT_SP_BSS_OFFSET),)
  861. ALL-y += init_sp_bss_offset_check
  862. endif
  863.  
  864. ifeq ($(CONFIG_MPC85xx)$(CONFIG_OF_SEPARATE),yy)
  865. ALL-y += u-boot-with-dtb.bin
  866. endif
  867.  
  868. LDFLAGS_u-boot += $(LDFLAGS_FINAL)
  869.  
  870. # Avoid 'Not enough room for program headers' error on binutils 2.28 onwards.
  871. LDFLAGS_u-boot += $(call ld-option, --no-dynamic-linker)
  872.  
  873. ifeq ($(CONFIG_ARC)$(CONFIG_NIOS2)$(CONFIG_X86)$(CONFIG_XTENSA),)
  874. LDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE)
  875. endif
  876.  
  877. # Normally we fill empty space with 0xff
  878. quiet_cmd_objcopy = OBJCOPY $@
  879. cmd_objcopy = $(OBJCOPY) --gap-fill=0xff $(OBJCOPYFLAGS) \
  880. $(OBJCOPYFLAGS_$(@F)) $< $@
  881.  
  882. # Provide a version which does not do this, for use by EFI
  883. quiet_cmd_zobjcopy = OBJCOPY $@
  884. cmd_zobjcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@
  885.  
  886. quiet_cmd_efipayload = OBJCOPY $@
  887. cmd_efipayload = $(OBJCOPY) -I binary -O $(EFIPAYLOAD_BFDTARGET) -B $(EFIPAYLOAD_BFDARCH) $< $@
  888.  
  889. MKIMAGEOUTPUT ?= /dev/null
  890.  
  891. quiet_cmd_mkimage = MKIMAGE $@
  892. cmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< $@ \
  893. >$(MKIMAGEOUTPUT) $(if $(KBUILD_VERBOSE:0=), && cat $(MKIMAGEOUTPUT))
  894.  
  895. quiet_cmd_mkfitimage = MKIMAGE $@
  896. cmd_mkfitimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -f $(U_BOOT_ITS) -E -p $(CONFIG_FIT_EXTERNAL_OFFSET) $@\
  897. >$(MKIMAGEOUTPUT) $(if $(KBUILD_VERBOSE:0=), && cat $(MKIMAGEOUTPUT))
  898.  
  899. quiet_cmd_cat = CAT $@
  900. cmd_cat = cat $(filter-out $(PHONY), $^) > $@
  901.  
  902. append = cat $(filter-out $< $(PHONY), $^) >> $@
  903.  
  904. quiet_cmd_pad_cat = CAT $@
  905. cmd_pad_cat = $(cmd_objcopy) && $(append) || rm -f $@
  906.  
  907. cfg: u-boot.cfg
  908.  
  909. quiet_cmd_cfgcheck = CFGCHK $2
  910. cmd_cfgcheck = $(srctree)/scripts/check-config.sh $2 \
  911. $(srctree)/scripts/config_whitelist.txt $(srctree)
  912.  
  913. all: $(ALL-y)
  914. ifeq ($(CONFIG_DM_I2C_COMPAT)$(CONFIG_SANDBOX),y)
  915. @echo >&2 "===================== WARNING ======================"
  916. @echo >&2 "This board uses CONFIG_DM_I2C_COMPAT. Please remove"
  917. @echo >&2 "(possibly in a subsequent patch in your series)"
  918. @echo >&2 "before sending patches to the mailing list."
  919. @echo >&2 "===================================================="
  920. endif
  921. ifeq ($(CONFIG_MMC),y)
  922. ifneq ($(CONFIG_DM_MMC)$(CONFIG_OF_CONTROL)$(CONFIG_BLK),yyy)
  923. @echo >&2 "===================== WARNING ======================"
  924. @echo >&2 "This board does not use CONFIG_DM_MMC. Please update"
  925. @echo >&2 "the board to use CONFIG_DM_MMC before the v2019.04 release."
  926. @echo >&2 "Failure to update by the deadline may result in board removal."
  927. @echo >&2 "See doc/driver-model/MIGRATION.txt for more info."
  928. @echo >&2 "===================================================="
  929. endif
  930. endif
  931. ifeq ($(CONFIG_USB),y)
  932. ifneq ($(CONFIG_DM_USB)$(CONFIG_OF_CONTROL)$(CONFIG_BLK),yyy)
  933. @echo >&2 "===================== WARNING ======================"
  934. @echo >&2 "This board does not use CONFIG_DM_USB. Please update"
  935. @echo >&2 "the board to use CONFIG_DM_USB before the v2019.07 release."
  936. @echo >&2 "Failure to update by the deadline may result in board removal."
  937. @echo >&2 "See doc/driver-model/MIGRATION.txt for more info."
  938. @echo >&2 "===================================================="
  939. endif
  940. endif
  941. ifeq ($(CONFIG_LIBATA)$(CONFIG_MVSATA_IDE),y)
  942. ifneq ($(CONFIG_DM_SCSI),y)
  943. @echo >&2 "===================== WARNING ======================"
  944. @echo >&2 "This board does not use CONFIG_DM_SCSI. Please update"
  945. @echo >&2 "the storage controller to use CONFIG_DM_SCSI before the v2019.07 release."
  946. @echo >&2 "Failure to update by the deadline may result in board removal."
  947. @echo >&2 "See doc/driver-model/MIGRATION.txt for more info."
  948. @echo >&2 "===================================================="
  949. endif
  950. endif
  951. ifeq ($(CONFIG_PCI),y)
  952. ifneq ($(CONFIG_DM_PCI),y)
  953. @echo >&2 "===================== WARNING ======================"
  954. @echo >&2 "This board does not use CONFIG_DM_PCI Please update"
  955. @echo >&2 "the board to use CONFIG_DM_PCI before the v2019.07 release."
  956. @echo >&2 "Failure to update by the deadline may result in board removal."
  957. @echo >&2 "See doc/driver-model/MIGRATION.txt for more info."
  958. @echo >&2 "===================================================="
  959. endif
  960. endif
  961. ifneq ($(CONFIG_LCD)$(CONFIG_VIDEO),)
  962. ifneq ($(CONFIG_DM_VIDEO),y)
  963. @echo >&2 "===================== WARNING ======================"
  964. @echo >&2 "This board does not use CONFIG_DM_VIDEO Please update"
  965. @echo >&2 "the board to use CONFIG_DM_VIDEO before the v2019.07 release."
  966. @echo >&2 "Failure to update by the deadline may result in board removal."
  967. @echo >&2 "See doc/driver-model/MIGRATION.txt for more info."
  968. @echo >&2 "===================================================="
  969. endif
  970. endif
  971. ifeq ($(CONFIG_OF_EMBED),y)
  972. @echo >&2 "===================== WARNING ======================"
  973. @echo >&2 "CONFIG_OF_EMBED is enabled. This option should only"
  974. @echo >&2 "be used for debugging purposes. Please use"
  975. @echo >&2 "CONFIG_OF_SEPARATE for boards in mainline."
  976. @echo >&2 "See doc/README.fdt-control for more info."
  977. @echo >&2 "===================================================="
  978. endif
  979. ifeq ($(CONFIG_SPI),y)
  980. ifneq ($(CONFIG_DM_SPI)$(CONFIG_OF_CONTROL),yy)
  981. @echo >&2 "===================== WARNING ======================"
  982. @echo >&2 "This board does not use CONFIG_DM_SPI. Please update"
  983. @echo >&2 "the board before v2019.04 for no dm conversion"
  984. @echo >&2 "and v2019.07 for partially dm converted drivers."
  985. @echo >&2 "Failure to update can lead to driver/board removal"
  986. @echo >&2 "See doc/driver-model/MIGRATION.txt for more info."
  987. @echo >&2 "===================================================="
  988. endif
  989. endif
  990. ifeq ($(CONFIG_SPI_FLASH),y)
  991. ifneq ($(CONFIG_DM_SPI_FLASH)$(CONFIG_OF_CONTROL),yy)
  992. @echo >&2 "===================== WARNING ======================"
  993. @echo >&2 "This board does not use CONFIG_DM_SPI_FLASH. Please update"
  994. @echo >&2 "the board to use CONFIG_SPI_FLASH before the v2019.07 release."
  995. @echo >&2 "Failure to update by the deadline may result in board removal."
  996. @echo >&2 "See doc/driver-model/MIGRATION.txt for more info."
  997. @echo >&2 "===================================================="
  998. endif
  999. endif
  1000. @# Check that this build does not use CONFIG options that we do not
  1001. @# know about unless they are in Kconfig. All the existing CONFIG
  1002. @# options are whitelisted, so new ones should not be added.
  1003. $(call cmd,cfgcheck,u-boot.cfg)
  1004.  
  1005. PHONY += dtbs
  1006. dtbs: dts/dt.dtb
  1007. @:
  1008. dts/dt.dtb: u-boot
  1009. $(Q)$(MAKE) $(build)=dts dtbs
  1010.  
  1011. quiet_cmd_copy = COPY $@
  1012. cmd_copy = cp $< $@
  1013.  
  1014. ifeq ($(CONFIG_MULTI_DTB_FIT),y)
  1015.  
  1016. fit-dtb.blob: dts/dt.dtb FORCE
  1017. $(call if_changed,mkimage)
  1018.  
  1019. MKIMAGEFLAGS_fit-dtb.blob = -f auto -A $(ARCH) -T firmware -C none -O u-boot \
  1020. -a 0 -e 0 -E \
  1021. $(patsubst %,-b arch/$(ARCH)/dts/%.dtb,$(subst ",,$(CONFIG_OF_LIST))) -d /dev/null
  1022.  
  1023. u-boot-fit-dtb.bin: u-boot-nodtb.bin fit-dtb.blob
  1024. $(call if_changed,cat)
  1025.  
  1026. u-boot.bin: u-boot-fit-dtb.bin FORCE
  1027. $(call if_changed,copy)
  1028. else ifeq ($(CONFIG_OF_SEPARATE),y)
  1029. u-boot-dtb.bin: u-boot-nodtb.bin dts/dt.dtb FORCE
  1030. $(call if_changed,cat)
  1031.  
  1032. u-boot.bin: u-boot-dtb.bin FORCE
  1033. $(call if_changed,copy)
  1034. else
  1035. u-boot.bin: u-boot-nodtb.bin FORCE
  1036. $(call if_changed,copy)
  1037. endif
  1038.  
  1039. %.imx: %.bin
  1040. $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@
  1041.  
  1042. %.vyb: %.imx
  1043. $(Q)$(MAKE) $(build)=arch/arm/cpu/armv7/vf610 $@
  1044.  
  1045. quiet_cmd_copy = COPY $@
  1046. cmd_copy = cp $< $@
  1047.  
  1048. u-boot.dtb: dts/dt.dtb
  1049. $(call cmd,copy)
  1050.  
  1051. OBJCOPYFLAGS_u-boot.hex := -O ihex
  1052.  
  1053. OBJCOPYFLAGS_u-boot.srec := -O srec
  1054.  
  1055. u-boot.hex u-boot.srec: u-boot FORCE
  1056. $(call if_changed,objcopy)
  1057.  
  1058. OBJCOPYFLAGS_u-boot-elf.srec := $(OBJCOPYFLAGS_u-boot.srec)
  1059.  
  1060. u-boot-elf.srec: u-boot.elf FORCE
  1061. $(call if_changed,objcopy)
  1062.  
  1063. OBJCOPYFLAGS_u-boot-spl.srec = $(OBJCOPYFLAGS_u-boot.srec)
  1064.  
  1065. spl/u-boot-spl.srec: spl/u-boot-spl FORCE
  1066. $(call if_changed,objcopy)
  1067.  
  1068. OBJCOPYFLAGS_u-boot-nodtb.bin := -O binary \
  1069. $(if $(CONFIG_X86_16BIT_INIT),-R .start16 -R .resetvec) \
  1070. $(if $(CONFIG_MPC85XX_HAVE_RESET_VECTOR),-R .bootpg -R .resetvec)
  1071.  
  1072. OBJCOPYFLAGS_u-boot-spl.hex = $(OBJCOPYFLAGS_u-boot.hex)
  1073.  
  1074. spl/u-boot-spl.hex: spl/u-boot-spl FORCE
  1075. $(call if_changed,objcopy)
  1076.  
  1077. binary_size_check: u-boot-nodtb.bin FORCE
  1078. @file_size=$(shell wc -c u-boot-nodtb.bin | awk '{print $$1}') ; \
  1079. map_size=$(shell cat u-boot.map | \
  1080. awk '/_image_copy_start/ {start = $$1} /_image_binary_end/ {end = $$1} END {if (start != "" && end != "") print "ibase=16; " toupper(end) " - " toupper(start)}' \
  1081. | sed 's/0X//g' \
  1082. | bc); \
  1083. if [ "" != "$$map_size" ]; then \
  1084. if test $$map_size -ne $$file_size; then \
  1085. echo "u-boot.map shows a binary size of $$map_size" >&2 ; \
  1086. echo " but u-boot-nodtb.bin shows $$file_size" >&2 ; \
  1087. exit 1; \
  1088. fi \
  1089. fi
  1090.  
  1091. ifneq ($(CONFIG_SYS_INIT_SP_BSS_OFFSET),)
  1092. ifneq ($(CONFIG_SYS_MALLOC_F_LEN),)
  1093. subtract_sys_malloc_f_len = space=$$(($${space} - $(CONFIG_SYS_MALLOC_F_LEN)))
  1094. else
  1095. subtract_sys_malloc_f_len = true
  1096. endif
  1097. # The 1/4 margin below is somewhat arbitrary. The likely initial SP usage is
  1098. # so low that the DTB could probably use 90%+ of the available space, for
  1099. # current values of CONFIG_SYS_INIT_SP_BSS_OFFSET at least. However, let's be
  1100. # safe for now and tweak this later if space becomes tight.
  1101. # A rejected alternative would be to check that some absolute minimum stack
  1102. # space was available. However, since CONFIG_SYS_INIT_SP_BSS_OFFSET is
  1103. # deliberately build-specific, to take account of build-to-build stack usage
  1104. # differences due to different feature sets, there is no common absolute value
  1105. # to check against.
  1106. init_sp_bss_offset_check: u-boot.dtb FORCE
  1107. @dtb_size=$(shell wc -c u-boot.dtb | awk '{print $$1}') ; \
  1108. space=$(CONFIG_SYS_INIT_SP_BSS_OFFSET) ; \
  1109. $(subtract_sys_malloc_f_len) ; \
  1110. quarter_space=$$(($${space} / 4)) ; \
  1111. if [ $${dtb_size} -gt $${quarter_space} ]; then \
  1112. echo "u-boot.dtb is larger than 1 quarter of " >&2 ; \
  1113. echo "(CONFIG_SYS_INIT_SP_BSS_OFFSET - CONFIG_SYS_MALLOC_F_LEN)" >&2 ; \
  1114. exit 1 ; \
  1115. fi
  1116. endif
  1117.  
  1118. u-boot-nodtb.bin: u-boot FORCE
  1119. $(call if_changed,objcopy)
  1120. $(call DO_STATIC_RELA,$<,$@,$(CONFIG_SYS_TEXT_BASE))
  1121. $(BOARD_SIZE_CHECK)
  1122.  
  1123. u-boot.ldr: u-boot
  1124. $(CREATE_LDR_ENV)
  1125. $(LDR) -T $(CONFIG_CPU) -c $@ $< $(LDR_FLAGS)
  1126. $(BOARD_SIZE_CHECK)
  1127.  
  1128. # binman
  1129. # ---------------------------------------------------------------------------
  1130. # Use 'make BINMAN_DEBUG=1' to enable debugging
  1131. quiet_cmd_binman = BINMAN $@
  1132. cmd_binman = $(srctree)/tools/binman/binman -u -d u-boot.dtb -O . -m \
  1133. -I . -I $(srctree) -I $(srctree)/board/$(BOARDDIR) \
  1134. $(if $(BINMAN_DEBUG),-D) $(BINMAN_$(@F)) $<
  1135.  
  1136. OBJCOPYFLAGS_u-boot.ldr.hex := -I binary -O ihex
  1137.  
  1138. OBJCOPYFLAGS_u-boot.ldr.srec := -I binary -O srec
  1139.  
  1140. u-boot.ldr.hex u-boot.ldr.srec: u-boot.ldr FORCE
  1141. $(call if_changed,objcopy)
  1142.  
  1143. #
  1144. # U-Boot entry point, needed for booting of full-blown U-Boot
  1145. # from the SPL U-Boot version.
  1146. #
  1147. ifndef CONFIG_SYS_UBOOT_START
  1148. CONFIG_SYS_UBOOT_START := 0
  1149. endif
  1150.  
  1151. # Boards with more complex image requirments can provide an .its source file
  1152. # or a generator script
  1153. ifneq ($(CONFIG_SPL_FIT_SOURCE),"")
  1154. U_BOOT_ITS = $(subst ",,$(CONFIG_SPL_FIT_SOURCE))
  1155. else
  1156. ifneq ($(CONFIG_SPL_FIT_GENERATOR),"")
  1157. U_BOOT_ITS := u-boot.its
  1158. ifeq ($(CONFIG_SPL_FIT_GENERATOR),"arch/arm/mach-imx/mkimage_fit_atf.sh")
  1159. U_BOOT_ITS_DEPS += u-boot-nodtb.bin
  1160. endif
  1161. ifeq ($(CONFIG_SPL_FIT_GENERATOR),"arch/arm/mach-rockchip/make_fit_atf.py")
  1162. U_BOOT_ITS_DEPS += u-boot
  1163. endif
  1164. $(U_BOOT_ITS): $(U_BOOT_ITS_DEPS) FORCE
  1165. $(srctree)/$(CONFIG_SPL_FIT_GENERATOR) \
  1166. $(patsubst %,arch/$(ARCH)/dts/%.dtb,$(subst ",,$(CONFIG_OF_LIST))) > $@
  1167. endif
  1168. endif
  1169.  
  1170. ifdef CONFIG_SPL_LOAD_FIT
  1171. MKIMAGEFLAGS_u-boot.img = -f auto -A $(ARCH) -T firmware -C none -O u-boot \
  1172. -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \
  1173. -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board" -E \
  1174. $(patsubst %,-b arch/$(ARCH)/dts/%.dtb,$(subst ",,$(CONFIG_OF_LIST)))
  1175. else
  1176. MKIMAGEFLAGS_u-boot.img = -A $(ARCH) -T firmware -C none -O u-boot \
  1177. -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \
  1178. -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board"
  1179. MKIMAGEFLAGS_u-boot-ivt.img = -A $(ARCH) -T firmware_ivt -C none -O u-boot \
  1180. -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \
  1181. -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board"
  1182. u-boot-ivt.img: MKIMAGEOUTPUT = u-boot-ivt.img.log
  1183. CLEAN_FILES += u-boot-ivt.img.log u-boot-dtb.imx.log SPL.log u-boot.imx.log
  1184. endif
  1185.  
  1186. MKIMAGEFLAGS_u-boot-dtb.img = $(MKIMAGEFLAGS_u-boot.img)
  1187.  
  1188. MKIMAGEFLAGS_u-boot.kwb = -n $(srctree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%) \
  1189. -T kwbimage -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE)
  1190.  
  1191. MKIMAGEFLAGS_u-boot-spl.kwb = -n $(srctree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%) \
  1192. -T kwbimage -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) \
  1193. $(if $(KEYDIR),-k $(KEYDIR))
  1194.  
  1195. MKIMAGEFLAGS_u-boot.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \
  1196. -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage
  1197.  
  1198. u-boot-dtb.img u-boot.img u-boot.kwb u-boot.pbl u-boot-ivt.img: \
  1199. $(if $(CONFIG_SPL_LOAD_FIT),u-boot-nodtb.bin dts/dt.dtb,u-boot.bin) FORCE
  1200. $(call if_changed,mkimage)
  1201. $(BOARD_SIZE_CHECK)
  1202.  
  1203. u-boot.itb: u-boot-nodtb.bin dts/dt.dtb $(U_BOOT_ITS) FORCE
  1204. $(call if_changed,mkfitimage)
  1205. $(BOARD_SIZE_CHECK)
  1206.  
  1207. u-boot-spl.kwb: u-boot.img spl/u-boot-spl.bin FORCE
  1208. $(call if_changed,mkimage)
  1209.  
  1210. u-boot.sha1: u-boot.bin
  1211. tools/ubsha1 u-boot.bin
  1212.  
  1213. u-boot.dis: u-boot
  1214. $(OBJDUMP) -d $< > $@
  1215.  
  1216. ifneq ($(CONFIG_SPL_PAYLOAD),)
  1217. SPL_PAYLOAD := $(CONFIG_SPL_PAYLOAD:"%"=%)
  1218. else
  1219. SPL_PAYLOAD := u-boot.bin
  1220. endif
  1221.  
  1222. OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \
  1223. --pad-to=$(CONFIG_SPL_PAD_TO)
  1224. u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE
  1225. $(call if_changed,pad_cat)
  1226.  
  1227. ifeq ($(CONFIG_ARCH_LPC32XX)$(CONFIG_SPL),yy)
  1228. MKIMAGEFLAGS_lpc32xx-spl.img = -T lpc32xximage -a $(CONFIG_SPL_TEXT_BASE)
  1229.  
  1230. lpc32xx-spl.img: spl/u-boot-spl.bin FORCE
  1231. $(call if_changed,mkimage)
  1232.  
  1233. OBJCOPYFLAGS_lpc32xx-boot-0.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO)
  1234.  
  1235. lpc32xx-boot-0.bin: lpc32xx-spl.img FORCE
  1236. $(call if_changed,objcopy)
  1237.  
  1238. OBJCOPYFLAGS_lpc32xx-boot-1.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO)
  1239.  
  1240. lpc32xx-boot-1.bin: lpc32xx-spl.img FORCE
  1241. $(call if_changed,objcopy)
  1242.  
  1243. lpc32xx-full.bin: lpc32xx-boot-0.bin lpc32xx-boot-1.bin u-boot.img FORCE
  1244. $(call if_changed,cat)
  1245.  
  1246. CLEAN_FILES += lpc32xx-*
  1247. endif
  1248.  
  1249. OBJCOPYFLAGS_u-boot-with-tpl.bin = -I binary -O binary \
  1250. --pad-to=$(CONFIG_TPL_PAD_TO)
  1251. tpl/u-boot-with-tpl.bin: tpl/u-boot-tpl.bin u-boot.bin FORCE
  1252. $(call if_changed,pad_cat)
  1253.  
  1254. SPL: spl/u-boot-spl.bin FORCE
  1255. $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@
  1256.  
  1257. ifeq ($(CONFIG_ARCH_IMX8M)$(CONFIG_ARCH_IMX8), y)
  1258. flash.bin: spl/u-boot-spl.bin u-boot.itb FORCE
  1259. $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@
  1260. endif
  1261.  
  1262. u-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL u-boot.bin FORCE
  1263. $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@
  1264.  
  1265. MKIMAGEFLAGS_u-boot.ubl = -n $(UBL_CONFIG) -T ublimage -e $(CONFIG_SYS_TEXT_BASE)
  1266.  
  1267. u-boot.ubl: u-boot-with-spl.bin FORCE
  1268. $(call if_changed,mkimage)
  1269.  
  1270. MKIMAGEFLAGS_u-boot-spl.ais = -s -n $(if $(CONFIG_AIS_CONFIG_FILE), \
  1271. $(srctree)/$(CONFIG_AIS_CONFIG_FILE:"%"=%),"/dev/null") \
  1272. -T aisimage -e $(CONFIG_SPL_TEXT_BASE)
  1273. spl/u-boot-spl.ais: spl/u-boot-spl.bin FORCE
  1274. $(call if_changed,mkimage)
  1275.  
  1276. OBJCOPYFLAGS_u-boot.ais = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO)
  1277. u-boot.ais: spl/u-boot-spl.ais u-boot.img FORCE
  1278. $(call if_changed,pad_cat)
  1279.  
  1280. u-boot-signed.sb: u-boot.bin spl/u-boot-spl.bin
  1281. $(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs u-boot-signed.sb
  1282. u-boot.sb: u-boot.bin spl/u-boot-spl.bin
  1283. $(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs u-boot.sb
  1284.  
  1285. # On x600 (SPEAr600) U-Boot is appended to U-Boot SPL.
  1286. # Both images are created using mkimage (crc etc), so that the ROM
  1287. # bootloader can check its integrity. Padding needs to be done to the
  1288. # SPL image (with mkimage header) and not the binary. Otherwise the resulting image
  1289. # which is loaded/copied by the ROM bootloader to SRAM doesn't fit.
  1290. # The resulting image containing both U-Boot images is called u-boot.spr
  1291. MKIMAGEFLAGS_u-boot-spl.img = -A $(ARCH) -T firmware -C none \
  1292. -a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n XLOADER
  1293. spl/u-boot-spl.img: spl/u-boot-spl.bin FORCE
  1294. $(call if_changed,mkimage)
  1295.  
  1296. OBJCOPYFLAGS_u-boot.spr = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \
  1297. --gap-fill=0xff
  1298. u-boot.spr: spl/u-boot-spl.img u-boot.img FORCE
  1299. $(call if_changed,pad_cat)
  1300.  
  1301. ifneq ($(CONFIG_ARCH_SOCFPGA),)
  1302. quiet_cmd_socboot = SOCBOOT $@
  1303. cmd_socboot = cat spl/u-boot-spl.sfp spl/u-boot-spl.sfp \
  1304. spl/u-boot-spl.sfp spl/u-boot-spl.sfp \
  1305. u-boot.img > $@ || rm -f $@
  1306. u-boot-with-spl.sfp: spl/u-boot-spl.sfp u-boot.img FORCE
  1307. $(call if_changed,socboot)
  1308. endif
  1309.  
  1310. ifeq ($(CONFIG_MPC85xx)$(CONFIG_OF_SEPARATE),yy)
  1311. u-boot-with-dtb.bin: u-boot.bin u-boot.dtb \
  1312. $(if $(CONFIG_MPC85XX_HAVE_RESET_VECTOR), u-boot-br.bin) FORCE
  1313. $(call if_changed,binman)
  1314.  
  1315. ifeq ($(CONFIG_MPC85XX_HAVE_RESET_VECTOR),y)
  1316. OBJCOPYFLAGS_u-boot-br.bin := -O binary -j .bootpg -j .resetvec
  1317. u-boot-br.bin: u-boot FORCE
  1318. $(call if_changed,objcopy)
  1319. endif
  1320. endif
  1321.  
  1322. # x86 uses a large ROM. We fill it with 0xff, put the 16-bit stuff (including
  1323. # reset vector) at the top, Intel ME descriptor at the bottom, and U-Boot in
  1324. # the middle. This is handled by binman based on an image description in the
  1325. # board's device tree.
  1326. ifneq ($(CONFIG_X86_RESET_VECTOR),)
  1327. rom: u-boot.rom FORCE
  1328.  
  1329. refcode.bin: $(srctree)/board/$(BOARDDIR)/refcode.bin FORCE
  1330. $(call if_changed,copy)
  1331.  
  1332. quiet_cmd_ldr = LD $@
  1333. cmd_ldr = $(LD) $(LDFLAGS_$(@F)) \
  1334. $(filter-out FORCE,$^) -o $@
  1335.  
  1336. u-boot.rom: u-boot-x86-16bit.bin u-boot.bin \
  1337. $(if $(CONFIG_SPL_X86_16BIT_INIT),spl/u-boot-spl.bin) \
  1338. $(if $(CONFIG_HAVE_REFCODE),refcode.bin) FORCE
  1339. $(call if_changed,binman)
  1340.  
  1341. OBJCOPYFLAGS_u-boot-x86-16bit.bin := -O binary -j .start16 -j .resetvec
  1342. u-boot-x86-16bit.bin: u-boot FORCE
  1343. $(call if_changed,objcopy)
  1344. endif
  1345.  
  1346. ifneq ($(CONFIG_ARCH_SUNXI),)
  1347. ifeq ($(CONFIG_ARM64),)
  1348. u-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.img u-boot.dtb FORCE
  1349. $(call if_changed,binman)
  1350. else
  1351. u-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.itb FORCE
  1352. $(call if_changed,cat)
  1353. endif
  1354. endif
  1355.  
  1356. ifneq ($(CONFIG_TEGRA),)
  1357. ifneq ($(CONFIG_BINMAN),)
  1358. # Makes u-boot-dtb-tegra.bin u-boot-tegra.bin u-boot-nodtb-tegra.bin
  1359. %-dtb-tegra.bin %-tegra.bin %-nodtb-tegra.bin: \
  1360. spl/%-spl %.bin FORCE
  1361. $(call if_changed,binman)
  1362. else
  1363. OBJCOPYFLAGS_u-boot-nodtb-tegra.bin = -O binary --pad-to=$(CONFIG_SYS_TEXT_BASE)
  1364. u-boot-nodtb-tegra.bin: spl/u-boot-spl u-boot-nodtb.bin FORCE
  1365. $(call if_changed,pad_cat)
  1366.  
  1367. OBJCOPYFLAGS_u-boot-tegra.bin = -O binary --pad-to=$(CONFIG_SYS_TEXT_BASE)
  1368. u-boot-tegra.bin: spl/u-boot-spl u-boot.bin FORCE
  1369. $(call if_changed,pad_cat)
  1370.  
  1371. u-boot-dtb-tegra.bin: u-boot-tegra.bin FORCE
  1372. $(call if_changed,copy)
  1373. endif # binman
  1374. endif
  1375.  
  1376. OBJCOPYFLAGS_u-boot-app.efi := $(OBJCOPYFLAGS_EFI)
  1377. u-boot-app.efi: u-boot FORCE
  1378. $(call if_changed,zobjcopy)
  1379.  
  1380. u-boot.bin.o: u-boot.bin FORCE
  1381. $(call if_changed,efipayload)
  1382.  
  1383. u-boot-payload.lds: $(LDSCRIPT_EFI) FORCE
  1384. $(call if_changed_dep,cpp_lds)
  1385.  
  1386. # Rule to link the EFI payload which contains a stub and a U-Boot binary
  1387. quiet_cmd_u-boot_payload ?= LD $@
  1388. cmd_u-boot_payload ?= $(LD) $(LDFLAGS_EFI_PAYLOAD) -o $@ \
  1389. -T u-boot-payload.lds arch/x86/cpu/call32.o \
  1390. lib/efi/efi.o lib/efi/efi_stub.o u-boot.bin.o \
  1391. $(addprefix arch/$(ARCH)/lib/,$(EFISTUB))
  1392.  
  1393. u-boot-payload: u-boot.bin.o u-boot-payload.lds FORCE
  1394. $(call if_changed,u-boot_payload)
  1395.  
  1396. OBJCOPYFLAGS_u-boot-payload.efi := $(OBJCOPYFLAGS_EFI)
  1397. u-boot-payload.efi: u-boot-payload FORCE
  1398. $(call if_changed,zobjcopy)
  1399.  
  1400. u-boot-img.bin: spl/u-boot-spl.bin u-boot.img FORCE
  1401. $(call if_changed,cat)
  1402.  
  1403. #Add a target to create boot binary having SPL binary in PBI format
  1404. #concatenated with u-boot binary. It is need by PowerPC SoC having
  1405. #internal SRAM <= 512KB.
  1406. MKIMAGEFLAGS_u-boot-spl.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \
  1407. -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage \
  1408. -A $(ARCH) -a $(CONFIG_SPL_TEXT_BASE)
  1409.  
  1410. spl/u-boot-spl.pbl: spl/u-boot-spl.bin FORCE
  1411. $(call if_changed,mkimage)
  1412.  
  1413. ifeq ($(ARCH),arm)
  1414. UBOOT_BINLOAD := u-boot.img
  1415. else
  1416. ifeq ($(CONFIG_MPC85xx)$(CONFIG_OF_SEPARATE),yy)
  1417. UBOOT_BINLOAD := u-boot-with-dtb.bin
  1418. else
  1419. UBOOT_BINLOAD := u-boot.bin
  1420. endif
  1421. endif
  1422.  
  1423. OBJCOPYFLAGS_u-boot-with-spl-pbl.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \
  1424. --gap-fill=0xff
  1425.  
  1426. u-boot-with-spl-pbl.bin: spl/u-boot-spl.pbl $(UBOOT_BINLOAD) FORCE
  1427. $(call if_changed,pad_cat)
  1428.  
  1429. # PPC4xx needs the SPL at the end of the image, since the reset vector
  1430. # is located at 0xfffffffc. So we can't use the "u-boot-img.bin" target
  1431. # and need to introduce a new build target with the full blown U-Boot
  1432. # at the start padded up to the start of the SPL image. And then concat
  1433. # the SPL image to the end.
  1434.  
  1435. OBJCOPYFLAGS_u-boot-img-spl-at-end.bin := -I binary -O binary \
  1436. --pad-to=$(CONFIG_UBOOT_PAD_TO) --gap-fill=0xff
  1437. u-boot-img-spl-at-end.bin: u-boot.img spl/u-boot-spl.bin FORCE
  1438. $(call if_changed,pad_cat)
  1439.  
  1440. # Create a new ELF from a raw binary file.
  1441. ifndef PLATFORM_ELFENTRY
  1442. PLATFORM_ELFENTRY = "_start"
  1443. endif
  1444. quiet_cmd_u-boot-elf ?= LD $@
  1445. cmd_u-boot-elf ?= $(LD) u-boot-elf.o -o $@ \
  1446. --defsym=$(PLATFORM_ELFENTRY)=$(CONFIG_SYS_TEXT_BASE) \
  1447. -Ttext=$(CONFIG_SYS_TEXT_BASE)
  1448. u-boot.elf: u-boot.bin
  1449. $(Q)$(OBJCOPY) -I binary $(PLATFORM_ELFFLAGS) $< u-boot-elf.o
  1450. $(call if_changed,u-boot-elf)
  1451.  
  1452. # MediaTek's ARM-based u-boot needs a header to contains its load address
  1453. # which is parsed by the BootROM.
  1454. # If the SPL build is enabled, the header will be added to the spl binary,
  1455. # and the spl binary and the u-boot.img will be combined into one file.
  1456. # Otherwise the header will be added to the u-boot.bin directly.
  1457.  
  1458. ifeq ($(CONFIG_SPL),y)
  1459. spl/u-boot-spl-mtk.bin: spl/u-boot-spl
  1460.  
  1461. u-boot-mtk.bin: u-boot.dtb u-boot.img spl/u-boot-spl-mtk.bin FORCE
  1462. $(call if_changed,binman)
  1463. else
  1464. MKIMAGEFLAGS_u-boot-mtk.bin = -T mtk_image \
  1465. -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) \
  1466. -n "$(patsubst "%",%,$(CONFIG_MTK_BROM_HEADER_INFO))"
  1467.  
  1468. u-boot-mtk.bin: u-boot.bin FORCE
  1469. $(call if_changed,mkimage)
  1470. endif
  1471.  
  1472. ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(ARCH)/Makefile.postlink)
  1473.  
  1474. # Rule to link u-boot
  1475. # May be overridden by arch/$(ARCH)/config.mk
  1476. quiet_cmd_u-boot__ ?= LD $@
  1477. cmd_u-boot__ ?= $(LD) $(LDFLAGS) $(LDFLAGS_u-boot) -o $@ \
  1478. -T u-boot.lds $(u-boot-init) \
  1479. --start-group $(u-boot-main) --end-group \
  1480. $(PLATFORM_LIBS) -Map u-boot.map; \
  1481. $(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true)
  1482.  
  1483. quiet_cmd_smap = GEN common/system_map.o
  1484. cmd_smap = \
  1485. smap=`$(call SYSTEM_MAP,u-boot) | \
  1486. awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \
  1487. $(CC) $(c_flags) -DSYSTEM_MAP="\"$${smap}\"" \
  1488. -c $(srctree)/common/system_map.c -o common/system_map.o
  1489.  
  1490. u-boot: $(u-boot-init) $(u-boot-main) u-boot.lds FORCE
  1491. +$(call if_changed,u-boot__)
  1492. ifeq ($(CONFIG_KALLSYMS),y)
  1493. $(call cmd,smap)
  1494. $(call cmd,u-boot__) common/system_map.o
  1495. endif
  1496.  
  1497. ifeq ($(CONFIG_RISCV),y)
  1498. @tools/prelink-riscv $@ 0
  1499. endif
  1500.  
  1501. quiet_cmd_sym ?= SYM $@
  1502. cmd_sym ?= $(OBJDUMP) -t $< > $@
  1503. u-boot.sym: u-boot FORCE
  1504. $(call if_changed,sym)
  1505.  
  1506. # The actual objects are generated when descending,
  1507. # make sure no implicit rule kicks in
  1508. $(sort $(u-boot-init) $(u-boot-main)): $(u-boot-dirs) ;
  1509.  
  1510. # Handle descending into subdirectories listed in $(vmlinux-dirs)
  1511. # Preset locale variables to speed up the build process. Limit locale
  1512. # tweaks to this spot to avoid wrong language settings when running
  1513. # make menuconfig etc.
  1514. # Error messages still appears in the original language
  1515.  
  1516. PHONY += $(u-boot-dirs)
  1517. $(u-boot-dirs): prepare scripts
  1518. $(Q)$(MAKE) $(build)=$@
  1519.  
  1520. tools: prepare
  1521. # The "tools" are needed early
  1522. $(filter-out tools, $(u-boot-dirs)): tools
  1523. # The "examples" conditionally depend on U-Boot (say, when USE_PRIVATE_LIBGCC
  1524. # is "yes"), so compile examples after U-Boot is compiled.
  1525. examples: $(filter-out examples, $(u-boot-dirs))
  1526.  
  1527. define filechk_uboot.release
  1528. echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
  1529. endef
  1530.  
  1531. # Store (new) UBOOTRELEASE string in include/config/uboot.release
  1532. include/config/uboot.release: include/config/auto.conf FORCE
  1533. $(call filechk,uboot.release)
  1534.  
  1535.  
  1536. # Things we need to do before we recursively start building the kernel
  1537. # or the modules are listed in "prepare".
  1538. # A multi level approach is used. prepareN is processed before prepareN-1.
  1539. # archprepare is used in arch Makefiles and when processed asm symlink,
  1540. # version.h and scripts_basic is processed / created.
  1541.  
  1542. # Listed in dependency order
  1543. PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3
  1544.  
  1545. # prepare3 is used to check if we are building in a separate output directory,
  1546. # and if so do:
  1547. # 1) Check that make has not been executed in the kernel src $(srctree)
  1548. prepare3: include/config/uboot.release
  1549. ifneq ($(KBUILD_SRC),)
  1550. @$(kecho) ' Using $(srctree) as source for U-Boot'
  1551. $(Q)if [ -f $(srctree)/.config -o -d $(srctree)/include/config ]; then \
  1552. echo >&2 " $(srctree) is not clean, please run 'make mrproper'"; \
  1553. echo >&2 " in the '$(srctree)' directory.";\
  1554. /bin/false; \
  1555. fi;
  1556. endif
  1557.  
  1558. # prepare2 creates a makefile if using a separate output directory
  1559. prepare2: prepare3 outputmakefile cfg
  1560.  
  1561. prepare1: prepare2 $(version_h) $(timestamp_h) \
  1562. include/config/auto.conf
  1563. ifeq ($(wildcard $(LDSCRIPT)),)
  1564. @echo >&2 " Could not find linker script."
  1565. @/bin/false
  1566. endif
  1567.  
  1568. ifeq ($(CONFIG_USE_DEFAULT_ENV_FILE),y)
  1569. prepare1: $(defaultenv_h)
  1570. endif
  1571.  
  1572. archprepare: prepare1 scripts_basic
  1573.  
  1574. prepare0: archprepare FORCE
  1575. $(Q)$(MAKE) $(build)=.
  1576.  
  1577. # All the preparing..
  1578. prepare: prepare0
  1579.  
  1580. # Generate some files
  1581. # ---------------------------------------------------------------------------
  1582.  
  1583. define filechk_version.h
  1584. (echo \#define PLAIN_VERSION \"$(UBOOTRELEASE)\"; \
  1585. echo \#define U_BOOT_VERSION \"U-Boot \" PLAIN_VERSION; \
  1586. echo \#define CC_VERSION_STRING \"$$(LC_ALL=C $(CC) --version | head -n 1)\"; \
  1587. echo \#define LD_VERSION_STRING \"$$(LC_ALL=C $(LD) --version | head -n 1)\"; )
  1588. endef
  1589.  
  1590. # The SOURCE_DATE_EPOCH mechanism requires a date that behaves like GNU date.
  1591. # The BSD date on the other hand behaves different and would produce errors
  1592. # with the misused '-d' switch. Respect that and search a working date with
  1593. # well known pre- and suffixes for the GNU variant of date.
  1594. define filechk_timestamp.h
  1595. (if test -n "$${SOURCE_DATE_EPOCH}"; then \
  1596. SOURCE_DATE="@$${SOURCE_DATE_EPOCH}"; \
  1597. DATE=""; \
  1598. for date in gdate date.gnu date; do \
  1599. $${date} -u -d "$${SOURCE_DATE}" >/dev/null 2>&1 && DATE="$${date}"; \
  1600. done; \
  1601. if test -n "$${DATE}"; then \
  1602. LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_DATE "%b %d %C%y"'; \
  1603. LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TIME "%T"'; \
  1604. LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TZ "%z"'; \
  1605. LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_DMI_DATE "%m/%d/%Y"'; \
  1606. LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_BUILD_DATE 0x%Y%m%d'; \
  1607. else \
  1608. return 42; \
  1609. fi; \
  1610. else \
  1611. LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; \
  1612. LC_ALL=C date +'#define U_BOOT_TIME "%T"'; \
  1613. LC_ALL=C date +'#define U_BOOT_TZ "%z"'; \
  1614. LC_ALL=C date +'#define U_BOOT_DMI_DATE "%m/%d/%Y"'; \
  1615. LC_ALL=C date +'#define U_BOOT_BUILD_DATE 0x%Y%m%d'; \
  1616. fi)
  1617. endef
  1618.  
  1619. define filechk_defaultenv.h
  1620. (grep -v '^#' | \
  1621. grep -v '^$$' | \
  1622. tr '\n' '\0' | \
  1623. sed -e 's/\\\x0/\n/' | \
  1624. xxd -i ; echo ", 0x00" ; )
  1625. endef
  1626.  
  1627. $(version_h): include/config/uboot.release FORCE
  1628. $(call filechk,version.h)
  1629.  
  1630. $(timestamp_h): $(srctree)/Makefile FORCE
  1631. $(call filechk,timestamp.h)
  1632.  
  1633. $(defaultenv_h): $(CONFIG_DEFAULT_ENV_FILE:"%"=%) FORCE
  1634. $(call filechk,defaultenv.h)
  1635.  
  1636. # ---------------------------------------------------------------------------
  1637. quiet_cmd_cpp_lds = LDS $@
  1638. cmd_cpp_lds = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) \
  1639. -D__ASSEMBLY__ -x assembler-with-cpp -std=c99 -P -o $@ $<
  1640.  
  1641. u-boot.lds: $(LDSCRIPT) prepare FORCE
  1642. $(call if_changed_dep,cpp_lds)
  1643.  
  1644. spl/u-boot-spl.bin: spl/u-boot-spl
  1645. @:
  1646. spl/u-boot-spl: tools prepare \
  1647. $(if $(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_SPL_OF_PLATDATA),dts/dt.dtb) \
  1648. $(if $(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_TPL_OF_PLATDATA),dts/dt.dtb)
  1649. $(Q)$(MAKE) obj=spl -f $(srctree)/scripts/Makefile.spl all
  1650.  
  1651. spl/sunxi-spl.bin: spl/u-boot-spl
  1652. @:
  1653.  
  1654. spl/sunxi-spl-with-ecc.bin: spl/sunxi-spl.bin
  1655. @:
  1656.  
  1657. spl/u-boot-spl.sfp: spl/u-boot-spl
  1658. @:
  1659.  
  1660. spl/boot.bin: spl/u-boot-spl
  1661. @:
  1662.  
  1663. tpl/u-boot-tpl.bin: tools prepare \
  1664. $(if $(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_SPL_OF_PLATDATA),dts/dt.dtb)
  1665. $(Q)$(MAKE) obj=tpl -f $(srctree)/scripts/Makefile.spl all
  1666.  
  1667. TAG_SUBDIRS := $(patsubst %,$(srctree)/%,$(u-boot-dirs) include)
  1668.  
  1669. FIND := find
  1670. FINDFLAGS := -L
  1671.  
  1672. tags ctags:
  1673. ctags -w -o ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
  1674. -name '*.[chS]' -print`
  1675. ln -s ctags tags
  1676.  
  1677. etags:
  1678. etags -a -o etags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
  1679. -name '*.[chS]' -print`
  1680. cscope:
  1681. $(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \
  1682. cscope.files
  1683. cscope -b -q -k
  1684.  
  1685. SYSTEM_MAP = \
  1686. $(NM) $1 | \
  1687. grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
  1688. LC_ALL=C sort
  1689. System.map: u-boot
  1690. @$(call SYSTEM_MAP,$<) > $@
  1691.  
  1692. #########################################################################
  1693.  
  1694. # ARM relocations should all be R_ARM_RELATIVE (32-bit) or
  1695. # R_AARCH64_RELATIVE (64-bit).
  1696. checkarmreloc: u-boot
  1697. @RELOC="`$(CROSS_COMPILE)readelf -r -W $< | cut -d ' ' -f 4 | \
  1698. grep R_A | sort -u`"; \
  1699. if test "$$RELOC" != "R_ARM_RELATIVE" -a \
  1700. "$$RELOC" != "R_AARCH64_RELATIVE"; then \
  1701. echo "$< contains unexpected relocations: $$RELOC"; \
  1702. false; \
  1703. fi
  1704.  
  1705. envtools: scripts_basic $(version_h) $(timestamp_h)
  1706. $(Q)$(MAKE) $(build)=tools/env
  1707.  
  1708. tools-only: scripts_basic $(version_h) $(timestamp_h)
  1709. $(Q)$(MAKE) $(build)=tools
  1710.  
  1711. tools-all: export HOST_TOOLS_ALL=y
  1712. tools-all: envtools tools ;
  1713.  
  1714. cross_tools: export CROSS_BUILD_TOOLS=y
  1715. cross_tools: tools ;
  1716.  
  1717. .PHONY : CHANGELOG
  1718. CHANGELOG:
  1719. git log --no-merges U-Boot-1_1_5.. | \
  1720. unexpand -a | sed -e 's/\s\s*$$//' > $@
  1721.  
  1722. #########################################################################
  1723.  
  1724. ###
  1725. # Cleaning is done on three levels.
  1726. # make clean Delete most generated files
  1727. # Leave enough to build external modules
  1728. # make mrproper Delete the current configuration, and all generated files
  1729. # make distclean Remove editor backup files, patch leftover files and the like
  1730.  
  1731. # Directories & files removed with 'make clean'
  1732. CLEAN_DIRS += $(MODVERDIR) \
  1733. $(foreach d, spl tpl, $(patsubst %,$d/%, \
  1734. $(filter-out include, $(shell ls -1 $d 2>/dev/null))))
  1735.  
  1736. CLEAN_FILES += include/bmp_logo.h include/bmp_logo_data.h \
  1737. boot* u-boot* MLO* SPL System.map fit-dtb.blob
  1738.  
  1739. # Directories & files removed with 'make mrproper'
  1740. MRPROPER_DIRS += include/config include/generated spl tpl \
  1741. .tmp_objdiff
  1742. MRPROPER_FILES += .config .config.old include/autoconf.mk* include/config.h \
  1743. ctags etags tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \
  1744. drivers/video/fonts/*.S
  1745.  
  1746. # clean - Delete most, but leave enough to build external modules
  1747. #
  1748. clean: rm-dirs := $(CLEAN_DIRS)
  1749. clean: rm-files := $(CLEAN_FILES)
  1750.  
  1751. clean-dirs := $(foreach f,$(u-boot-alldirs),$(if $(wildcard $(srctree)/$f/Makefile),$f))
  1752.  
  1753. clean-dirs := $(addprefix _clean_, $(clean-dirs))
  1754.  
  1755. PHONY += $(clean-dirs) clean archclean
  1756. $(clean-dirs):
  1757. $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@)
  1758.  
  1759. clean: $(clean-dirs)
  1760. $(call cmd,rmdirs)
  1761. $(call cmd,rmfiles)
  1762. @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \
  1763. \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
  1764. -o -name '*.ko.*' -o -name '*.su' \
  1765. -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
  1766. -o -name '*.lex.c' -o -name '*.tab.[ch]' \
  1767. -o -name '*.symtypes' -o -name 'modules.order' \
  1768. -o -name modules.builtin -o -name '.tmp_*.o.*' \
  1769. -o -name 'dsdt.aml' -o -name 'dsdt.asl.tmp' -o -name 'dsdt.c' \
  1770. -o -name '*.efi' -o -name '*.gcno' -o -name '*.so' \) \
  1771. -type f -print | xargs rm -f
  1772.  
  1773. # mrproper - Delete all generated files, including .config
  1774. #
  1775. mrproper: rm-dirs := $(wildcard $(MRPROPER_DIRS))
  1776. mrproper: rm-files := $(wildcard $(MRPROPER_FILES))
  1777. mrproper-dirs := $(addprefix _mrproper_,scripts)
  1778.  
  1779. PHONY += $(mrproper-dirs) mrproper archmrproper
  1780. $(mrproper-dirs):
  1781. $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@)
  1782.  
  1783. mrproper: clean $(mrproper-dirs)
  1784. $(call cmd,rmdirs)
  1785. $(call cmd,rmfiles)
  1786. @rm -f arch/*/include/asm/arch
  1787.  
  1788. # distclean
  1789. #
  1790. PHONY += distclean
  1791.  
  1792. distclean: mrproper
  1793. @find $(srctree) $(RCS_FIND_IGNORE) \
  1794. \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
  1795. -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
  1796. -o -name '.*.rej' -o -name '*%' -o -name 'core' \
  1797. -o -name '*.pyc' \) \
  1798. -type f -print | xargs rm -f
  1799. @rm -f boards.cfg CHANGELOG
  1800.  
  1801. backup:
  1802. F=`basename $(srctree)` ; cd .. ; \
  1803. gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F
  1804.  
  1805. help:
  1806. @echo 'Cleaning targets:'
  1807. @echo ' clean - Remove most generated files but keep the config'
  1808. @echo ' mrproper - Remove all generated files + config + various backup files'
  1809. @echo ' distclean - mrproper + remove editor backup and patch files'
  1810. @echo ''
  1811. @echo 'Configuration targets:'
  1812. @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help
  1813. @echo ''
  1814. @echo 'Test targets:'
  1815. @echo ''
  1816. @echo ' check - Run all automated tests that use sandbox'
  1817. @echo ' qcheck - Run quick automated tests that use sandbox'
  1818. @echo ''
  1819. @echo 'Other generic targets:'
  1820. @echo ' all - Build all necessary images depending on configuration'
  1821. @echo ' tests - Build U-Boot for sandbox and run tests'
  1822. @echo '* u-boot - Build the bare u-boot'
  1823. @echo ' dir/ - Build all files in dir and below'
  1824. @echo ' dir/file.[oisS] - Build specified target only'
  1825. @echo ' dir/file.lst - Build specified mixed source/assembly target only'
  1826. @echo ' (requires a recent binutils and recent build (System.map))'
  1827. @echo ' tags/ctags - Generate ctags file for editors'
  1828. @echo ' etags - Generate etags file for editors'
  1829. @echo ' cscope - Generate cscope index'
  1830. @echo ' ubootrelease - Output the release version string (use with make -s)'
  1831. @echo ' ubootversion - Output the version stored in Makefile (use with make -s)'
  1832. @echo " cfg - Don't build, just create the .cfg files"
  1833. @echo " envtools - Build only the target-side environment tools"
  1834. @echo ''
  1835. @echo 'Static analysers'
  1836. @echo ' checkstack - Generate a list of stack hogs'
  1837. @echo ' coccicheck - Execute static code analysis with Coccinelle'
  1838. @echo ''
  1839. @echo 'Documentation targets:'
  1840. @$(MAKE) -f $(srctree)/Documentation/Makefile dochelp
  1841. @echo ''
  1842. @echo ' make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build'
  1843. @echo ' make V=2 [targets] 2 => give reason for rebuild of target'
  1844. @echo ' make O=dir [targets] Locate all output files in "dir", including .config'
  1845. @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)'
  1846. @echo ' make C=2 [targets] Force check of all c source with $$CHECK'
  1847. @echo ' make RECORDMCOUNT_WARN=1 [targets] Warn about ignored mcount sections'
  1848. @echo ' make W=n [targets] Enable extra gcc checks, n=1,2,3 where'
  1849. @echo ' 1: warnings which may be relevant and do not occur too often'
  1850. @echo ' 2: warnings which occur quite often but may still be relevant'
  1851. @echo ' 3: more obscure warnings, can most likely be ignored'
  1852. @echo ' Multiple levels can be combined with W=12 or W=123'
  1853. @echo ''
  1854. @echo 'Execute "make" or "make all" to build all targets marked with [*] '
  1855. @echo 'For further info see the ./README file'
  1856.  
  1857. tests check:
  1858. $(srctree)/test/run
  1859.  
  1860. qcheck:
  1861. $(srctree)/test/run quick
  1862.  
  1863. # Documentation targets
  1864. # ---------------------------------------------------------------------------
  1865. DOC_TARGETS := xmldocs latexdocs pdfdocs htmldocs epubdocs cleandocs \
  1866. linkcheckdocs dochelp refcheckdocs
  1867. PHONY += $(DOC_TARGETS)
  1868. $(DOC_TARGETS): scripts_basic FORCE
  1869. $(Q)$(MAKE) $(build)=Documentation $@
  1870.  
  1871. endif #ifeq ($(config-targets),1)
  1872. endif #ifeq ($(mixed-targets),1)
  1873.  
  1874. PHONY += checkstack ubootrelease ubootversion
  1875.  
  1876. checkstack:
  1877. $(OBJDUMP) -d u-boot $$(find . -name u-boot-spl) | \
  1878. $(PERL) $(src)/scripts/checkstack.pl $(ARCH)
  1879.  
  1880. ubootrelease:
  1881. @echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
  1882.  
  1883. ubootversion:
  1884. @echo $(UBOOTVERSION)
  1885.  
  1886. # Single targets
  1887. # ---------------------------------------------------------------------------
  1888. # Single targets are compatible with:
  1889. # - build with mixed source and output
  1890. # - build with separate output dir 'make O=...'
  1891. # - external modules
  1892. #
  1893. # target-dir => where to store outputfile
  1894. # build-dir => directory in kernel source tree to use
  1895.  
  1896. ifeq ($(KBUILD_EXTMOD),)
  1897. build-dir = $(patsubst %/,%,$(dir $@))
  1898. target-dir = $(dir $@)
  1899. else
  1900. zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@)))
  1901. build-dir = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash))
  1902. target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@))
  1903. endif
  1904.  
  1905. %.s: %.c prepare scripts FORCE
  1906. $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
  1907. %.i: %.c prepare scripts FORCE
  1908. $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
  1909. %.o: %.c prepare scripts FORCE
  1910. $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
  1911. %.lst: %.c prepare scripts FORCE
  1912. $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
  1913. %.s: %.S prepare scripts FORCE
  1914. $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
  1915. %.o: %.S prepare scripts FORCE
  1916. $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
  1917. %.symtypes: %.c prepare scripts FORCE
  1918. $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
  1919.  
  1920. # Modules
  1921. /: prepare scripts FORCE
  1922. $(cmd_crmodverdir)
  1923. $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
  1924. $(build)=$(build-dir)
  1925. %/: prepare scripts FORCE
  1926. $(cmd_crmodverdir)
  1927. $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
  1928. $(build)=$(build-dir)
  1929. %.ko: prepare scripts FORCE
  1930. $(cmd_crmodverdir)
  1931. $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
  1932. $(build)=$(build-dir) $(@:.ko=.o)
  1933. $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
  1934.  
  1935. # Consistency checks
  1936. # ---------------------------------------------------------------------------
  1937.  
  1938. PHONY += coccicheck
  1939.  
  1940. coccicheck:
  1941. $(Q)$(CONFIG_SHELL) $(srctree)/scripts/$@
  1942.  
  1943. # FIXME Should go into a make.lib or something
  1944. # ===========================================================================
  1945.  
  1946. quiet_cmd_rmdirs = $(if $(wildcard $(rm-dirs)),CLEAN $(wildcard $(rm-dirs)))
  1947. cmd_rmdirs = rm -rf $(rm-dirs)
  1948.  
  1949. quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files)))
  1950. cmd_rmfiles = rm -f $(rm-files)
  1951.  
  1952. # read all saved command lines
  1953.  
  1954. targets := $(wildcard $(sort $(targets)))
  1955. cmd_files := $(wildcard .*.cmd $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd))
  1956.  
  1957. ifneq ($(cmd_files),)
  1958. $(cmd_files): ; # Do not try to update included dependency files
  1959. include $(cmd_files)
  1960. endif
  1961.  
  1962. endif # skip-makefile
  1963.  
  1964. PHONY += FORCE
  1965. FORCE:
  1966.  
  1967. # Declare the contents of the .PHONY variable as phony. We keep that
  1968. # information in a variable so we can use it in if_changed and friends.
  1969. .PHONY: $(PHONY)
Advertisement
Add Comment
Please, Sign In to add comment