kbuild: sync top Makefile with Linux 3.18-rc1
Since Linux 3.15, relative path feature and related fixes, cleanups have been merged to the top Makefile. The relative path feature looks stable enough, so let's import it to U-Boot along with various cleanups. Commits imported from Linux (some need adjustment) are: [1] commit 7e1c04779efd by Michal Marek kbuild: Use relative path for $(objtree) [2] commit 890676c65d69 by Michal Marek kbuild: Use relative path when building in the source tree [3] commit 9da0763bdd82 by Michal Marek kbuild: Use relative path when building in a subdir of the source tree [4] commit c2e28dc975ea by Michal Marek kbuild: Print the name of the build directory [5] commit 066b7ed95580 by Michal Marek kbuild: Do not print the build directory with make -s [6] commit 3f1d9a6cec01 by Michal Marek kbuild: make -s should be used with kernelrelease/kernelversion/image_name [7] commit 7ff525712acf by Masahiro Yamada kbuild: fake the "Entering directory ..." message more simply [8] commit 745a254322c8 by Masahiro Yamada kbuild: use $(Q) for sub-make target [9] commit aa55c8e2f7a3 by Masahiro Yamada kbuild: handle C=... and M=... after entering into build directory [10] commit ab7474ea5361 by Borislav Petkov Kbuild: Ignore GREP_OPTIONS env variable To use relative path feature, tools/Makefile and scripts/Makefile.autoconf must be tweaked. Signed-off-by: Michal Marek <mmarek@suse.cz> Signed-off-by: Borislav Petkov <bp@suse.de> Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
This commit is contained in:
parent
cb6e7b0db9
commit
ffe29ebc07
186
Makefile
186
Makefile
|
@ -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
|
||||
# Do not 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
|
||||
MAKEFLAGS += -rR
|
||||
|
||||
# Avoid funny character set dependencies
|
||||
unexport LC_ALL
|
||||
|
@ -29,6 +20,9 @@ LC_COLLATE=C
|
|||
LC_NUMERIC=C
|
||||
export LC_COLLATE LC_NUMERIC
|
||||
|
||||
# Avoid interference with shell env settings
|
||||
unexport 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
|
||||
endif
|
||||
|
||||
# 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.
|
||||
|
||||
ifeq ("$(origin C)", "command line")
|
||||
KBUILD_CHECKSRC = $(C)
|
||||
endif
|
||||
ifndef KBUILD_CHECKSRC
|
||||
KBUILD_CHECKSRC = 0
|
||||
ifeq ($(KBUILD_VERBOSE),1)
|
||||
quiet =
|
||||
Q =
|
||||
else
|
||||
quiet=quiet_
|
||||
Q = @
|
||||
endif
|
||||
|
||||
# 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
|
||||
ifdef SUBDIRS
|
||||
KBUILD_EXTMOD ?= $(SUBDIRS)
|
||||
# If the user is running make -s (silent mode), suppress echoing of
|
||||
# commands
|
||||
|
||||
ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4
|
||||
ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),)
|
||||
quiet=silent_
|
||||
endif
|
||||
else # make-3.8x
|
||||
ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
|
||||
quiet=silent_
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ("$(origin M)", "command line")
|
||||
KBUILD_EXTMOD := $(M)
|
||||
endif
|
||||
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)
|
||||
ifeq ($(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
|
||||
ifeq ($(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.
|
||||
|
||||
ifeq ("$(origin C)", "command line")
|
||||
KBUILD_CHECKSRC = $(C)
|
||||
endif
|
||||
ifndef KBUILD_CHECKSRC
|
||||
KBUILD_CHECKSRC = 0
|
||||
endif
|
||||
|
||||
# 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
|
||||
ifdef SUBDIRS
|
||||
KBUILD_EXTMOD ?= $(SUBDIRS)
|
||||
endif
|
||||
|
||||
ifeq ("$(origin M)", "command line")
|
||||
KBUILD_EXTMOD := $(M)
|
||||
endif
|
||||
|
||||
# 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
|
||||
endif
|
||||
|
||||
srctree := $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR))
|
||||
objtree := $(CURDIR)
|
||||
ifeq ($(KBUILD_SRC),)
|
||||
# building in the source tree
|
||||
srctree := .
|
||||
else
|
||||
ifeq ($(KBUILD_SRC)/,$(dir $(CURDIR)))
|
||||
# building in a subdirectory of the source tree
|
||||
srctree := ..
|
||||
else
|
||||
srctree := $(KBUILD_SRC)
|
||||
endif
|
||||
endif
|
||||
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.
|
||||
|
||||
ifeq ($(KBUILD_VERBOSE),1)
|
||||
quiet =
|
||||
Q =
|
||||
else
|
||||
quiet=quiet_
|
||||
Q = @
|
||||
endif
|
||||
|
||||
# If the user is running make -s (silent mode), suppress echoing of
|
||||
# commands
|
||||
|
||||
ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4
|
||||
ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),)
|
||||
quiet=silent_
|
||||
endif
|
||||
else # make-3.8x
|
||||
ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
|
||||
quiet=silent_
|
||||
endif
|
||||
endif
|
||||
|
||||
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'
|
||||
|
|
|
@ -89,9 +89,12 @@ PHONY += create_symlink
|
|||
create_symlink:
|
||||
ifneq ($(KBUILD_SRC),)
|
||||
$(Q)mkdir -p include/asm
|
||||
$(Q)ln -fsn $(KBUILD_SRC)/arch/$(ARCH)/include/asm/arch-$(if $(SOC),$(SOC),$(CPU)) \
|
||||
include/asm/arch
|
||||
else
|
||||
$(Q)ln -fsn arch-$(if $(SOC),$(SOC),$(CPU)) \
|
||||
arch/$(ARCH)/include/asm/arch
|
||||
endif
|
||||
$(Q)ln -fsn $(srctree)/arch/$(ARCH)/include/asm/arch-$(if $(SOC),$(SOC),$(CPU)) \
|
||||
$(if $(KBUILD_SRC),,arch/$(ARCH)/)include/asm/arch
|
||||
|
||||
PHONY += FORCE
|
||||
FORCE:
|
||||
|
|
|
@ -157,7 +157,7 @@ HOSTCFLAGS_sha256.o := -pedantic
|
|||
#HOSTCFLAGS_mpc86x_clk.o := -pedantic
|
||||
|
||||
quiet_cmd_wrap = WRAP $@
|
||||
cmd_wrap = echo "\#include <$(srctree)/$(patsubst $(obj)/%,%,$@)>" >$@
|
||||
cmd_wrap = echo "\#include <../$(patsubst $(obj)/%,%,$@)>" >$@
|
||||
|
||||
$(obj)/lib/%.c $(obj)/common/%.c:
|
||||
$(call cmd,wrap)
|
||||
|
|
Loading…
Reference in New Issue