@ -1,10 +1,3 @@
#
# (C) Copyright 2000-2013
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
#
# SPDX-License-Identifier: GPL-2.0+
#
VERSION = 2014
PATCHLEVEL = 10
SUBLEVEL =
@ -17,11 +10,9 @@ NAME =
# Comments in this file are targeted only to the developer, do not
# expect to learn how to build the kernel reading this file.
# Do not:
# o use make's built-in rules and variables
# (this increases performance and avoids hard-to-debug behaviour);
# o print "Entering directory ...";
MAKEFLAGS += -rR --no-print-directory
# Do not use make's built-in rules and variables
# (this increases performance and avoids hard-to-debug behaviour);
MAKEFLAGS += -rR
# Avoid funny character set dependencies
u n export LC_ALL
@ -29,6 +20,9 @@ LC_COLLATE=C
LC_NUMERIC = C
export LC_COLLATE LC_NUMERIC
# Avoid interference with shell env settings
u n export GREP_OPTIONS
# We are using a recursive build, so we need to do a little thinking
# to get the ordering right.
#
@ -45,6 +39,29 @@ export LC_COLLATE LC_NUMERIC
# descending is started. They are now explicitly listed as the
# prepare rule.
# Beautify output
# ---------------------------------------------------------------------------
#
# Normally, we echo the whole command before executing it. By making
# that echo $($(quiet)$(cmd)), we now have the possibility to set
# $(quiet) to choose other forms of output instead, e.g.
#
# quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@
# cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<
#
# If $(quiet) is empty, the whole command will be printed.
# If it is set to "quiet_", only the short version will be printed.
# If it is set to "silent_", nothing will be printed at all, since
# the variable $(silent_cmd_cc_o_c) doesn't exist.
#
# A simple variant is to prefix commands with $(Q) - that's useful
# for commands that shall be hidden in non-verbose mode.
#
# $(Q)ln $@ :<
#
# If KBUILD_VERBOSE equals 0 then the above command will be hidden.
# If KBUILD_VERBOSE equals 1 then the above command is displayed.
#
# To put more focus on warnings, be less verbose as default
# Use 'make V=1' to see the full commands
@ -55,33 +72,28 @@ ifndef KBUILD_VERBOSE
KBUILD_VERBOSE = 0
e n d i f
# Call a source code checker (by default, "sparse") as part of the
# C compilation.
#
# Use 'make C=1' to enable checking of only re-compiled files.
# Use 'make C=2' to enable checking of *all* source files, regardless
# of whether they are re-compiled or not.
#
# See the file "Documentation/sparse.txt" for more details, including
# where to get the "sparse" utility.
i f e q ( $( KBUILD_VERBOSE ) , 1 )
quiet =
Q =
e l s e
quiet = quiet_
Q = @
e n d i f
i f e q ( "$(origin C)" , "command line" )
KBUILD_CHECKSRC = $( C)
# If the user is running make -s (silent mode), suppress echoing of
# commands
i f n e q ( $( filter 4.%,$ ( MAKE_VERSION ) ) , ) # make-4
i f n e q ( $( filter %s ,$ ( firstword x $ ( MAKEFLAGS ) ) ) , )
quiet = silent_
e n d i f
i f n d e f K B U I L D _ C H E C K S R C
KBUILD_CHECKSRC = 0
e l s e # make-3.8x
i f n e q ( $( filter s % -s %,$ ( MAKEFLAGS ) ) , )
quiet = silent_
e n d i f
# Use make M=dir to specify directory of external module to build
# Old syntax make ... SUBDIRS=$PWD is still supported
# Setting the environment variable KBUILD_EXTMOD take precedence
i f d e f S U B D I R S
KBUILD_EXTMOD ?= $( SUBDIRS)
e n d i f
i f e q ( "$(origin M)" , "command line" )
KBUILD_EXTMOD := $( M)
e n d i f
export quiet Q KBUILD_VERBOSE
# kbuild supports saving output files in a separate directory.
# To locate output files in a separate directory two syntaxes are supported.
@ -98,7 +110,6 @@ endif
# The O= assignment takes precedence over the KBUILD_OUTPUT environment
# variable.
# KBUILD_SRC is set on invocation of make in OBJ directory
# KBUILD_SRC is not intended to be used by the regular user (for now)
i f e q ( $( KBUILD_SRC ) , )
@ -131,10 +142,8 @@ $(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make
@:
sub-make : FORCE
$( if $( KBUILD_VERBOSE:1= ) ,@) $( MAKE) -C $( KBUILD_OUTPUT) \
KBUILD_SRC = $( CURDIR) \
KBUILD_EXTMOD = " $( KBUILD_EXTMOD) " -f $( CURDIR) /Makefile \
$( filter-out _all sub-make,$( MAKECMDGOALS) )
$( Q) $( MAKE) -C $( KBUILD_OUTPUT) KBUILD_SRC = $( CURDIR) \
-f $( CURDIR) /Makefile $( filter-out _all sub-make,$( MAKECMDGOALS) )
# Leave processing to above invocation of make
skip-makefile := 1
@ -144,6 +153,39 @@ endif # ifeq ($(KBUILD_SRC),)
# We process the rest of the Makefile if this is the final invocation of make
i f e q ( $( skip -makefile ) , )
# Do not print "Entering directory ...",
# but we want to display it when entering to the output directory
# so that IDEs/editors are able to understand relative filenames.
MAKEFLAGS += --no-print-directory
# Call a source code checker (by default, "sparse") as part of the
# C compilation.
#
# Use 'make C=1' to enable checking of only re-compiled files.
# Use 'make C=2' to enable checking of *all* source files, regardless
# of whether they are re-compiled or not.
#
# See the file "Documentation/sparse.txt" for more details, including
# where to get the "sparse" utility.
i f e q ( "$(origin C)" , "command line" )
KBUILD_CHECKSRC = $( C)
e n d i f
i f n d e f K B U I L D _ C H E C K S R C
KBUILD_CHECKSRC = 0
e n d i f
# Use make M=dir to specify directory of external module to build
# Old syntax make ... SUBDIRS=$PWD is still supported
# Setting the environment variable KBUILD_EXTMOD take precedence
i f d e f S U B D I R S
KBUILD_EXTMOD ?= $( SUBDIRS)
e n d i f
i f e q ( "$(origin M)" , "command line" )
KBUILD_EXTMOD := $( M)
e n d i f
# If building an external module we do not care about the all: rule
# but instead _all depend on modules
PHONY += all
@ -153,8 +195,18 @@ else
_all : modules
e n d i f
srctree := $( if $( KBUILD_SRC) ,$( KBUILD_SRC) ,$( CURDIR) )
objtree := $( CURDIR)
i f e q ( $( KBUILD_SRC ) , )
# building in the source tree
srctree := .
e l s e
ifeq ( $( KBUILD_SRC) /,$( dir $( CURDIR) ) )
# building in a subdirectory of the source tree
srctree := ..
else
srctree := $( KBUILD_SRC)
endif
e n d i f
objtree := .
src := $( srctree)
obj := $( objtree)
@ -262,52 +314,6 @@ endif
export KBUILD_MODULES KBUILD_BUILTIN
export KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD
# Beautify output
# ---------------------------------------------------------------------------
#
# Normally, we echo the whole command before executing it. By making
# that echo $($(quiet)$(cmd)), we now have the possibility to set
# $(quiet) to choose other forms of output instead, e.g.
#
# quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@
# cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<
#
# If $(quiet) is empty, the whole command will be printed.
# If it is set to "quiet_", only the short version will be printed.
# If it is set to "silent_", nothing will be printed at all, since
# the variable $(silent_cmd_cc_o_c) doesn't exist.
#
# A simple variant is to prefix commands with $(Q) - that's useful
# for commands that shall be hidden in non-verbose mode.
#
# $(Q)ln $@ :<
#
# If KBUILD_VERBOSE equals 0 then the above command will be hidden.
# If KBUILD_VERBOSE equals 1 then the above command is displayed.
i f e q ( $( KBUILD_VERBOSE ) , 1 )
quiet =
Q =
e l s e
quiet = quiet_
Q = @
e n d i f
# If the user is running make -s (silent mode), suppress echoing of
# commands
i f n e q ( $( filter 4.%,$ ( MAKE_VERSION ) ) , ) # make-4
i f n e q ( $( filter %s ,$ ( firstword x $ ( MAKEFLAGS ) ) ) , )
quiet = silent_
e n d i f
e l s e # make-3.8x
i f n e q ( $( filter s % -s %,$ ( MAKEFLAGS ) ) , )
quiet = silent_
e n d i f
e n d i f
export quiet Q KBUILD_VERBOSE
# Look for make include files relative to root of kernel src
MAKEFLAGS += --include-dir= $( srctree)
@ -1308,7 +1314,7 @@ help:
@echo ''
@echo 'Other generic targets:'
@echo ' all - Build all necessary images depending on configuration'
@echo ' u-boot - Build the bare u-boot'
@echo '* u-boot - Build the bare u-boot'
@echo ' dir/ - Build all files in dir and below'
@echo ' dir/file.[oisS] - Build specified target only'
@echo ' dir/file.lst - Build specified mixed source/assembly target only'
@ -1316,8 +1322,8 @@ help:
@echo ' tags/ctags - Generate ctags file for editors'
@echo ' etags - Generate etags file for editors'
@echo ' cscope - Generate cscope index'
@echo ' ubootrelease - Output the release version string'
@echo ' ubootversion - Output the version stored in Makefile'
@echo ' ubootrelease - Output the release version string (use with make -s) '
@echo ' ubootversion - Output the version stored in Makefile (use with make -s) '
@echo ''
@echo 'Static analysers'
@echo ' checkstack - Generate a list of stack hogs'