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
188
Makefile
188
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
|
VERSION = 2014
|
||||||
PATCHLEVEL = 10
|
PATCHLEVEL = 10
|
||||||
SUBLEVEL =
|
SUBLEVEL =
|
||||||
|
@ -17,11 +10,9 @@ NAME =
|
||||||
# Comments in this file are targeted only to the developer, do not
|
# Comments in this file are targeted only to the developer, do not
|
||||||
# expect to learn how to build the kernel reading this file.
|
# expect to learn how to build the kernel reading this file.
|
||||||
|
|
||||||
# Do not:
|
# Do not use make's built-in rules and variables
|
||||||
# o use make's built-in rules and variables
|
# (this increases performance and avoids hard-to-debug behaviour);
|
||||||
# (this increases performance and avoids hard-to-debug behaviour);
|
MAKEFLAGS += -rR
|
||||||
# o print "Entering directory ...";
|
|
||||||
MAKEFLAGS += -rR --no-print-directory
|
|
||||||
|
|
||||||
# Avoid funny character set dependencies
|
# Avoid funny character set dependencies
|
||||||
unexport LC_ALL
|
unexport LC_ALL
|
||||||
|
@ -29,6 +20,9 @@ LC_COLLATE=C
|
||||||
LC_NUMERIC=C
|
LC_NUMERIC=C
|
||||||
export LC_COLLATE LC_NUMERIC
|
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
|
# We are using a recursive build, so we need to do a little thinking
|
||||||
# to get the ordering right.
|
# to get the ordering right.
|
||||||
#
|
#
|
||||||
|
@ -45,6 +39,29 @@ export LC_COLLATE LC_NUMERIC
|
||||||
# descending is started. They are now explicitly listed as the
|
# descending is started. They are now explicitly listed as the
|
||||||
# prepare rule.
|
# 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
|
# To put more focus on warnings, be less verbose as default
|
||||||
# Use 'make V=1' to see the full commands
|
# Use 'make V=1' to see the full commands
|
||||||
|
|
||||||
|
@ -55,33 +72,28 @@ ifndef KBUILD_VERBOSE
|
||||||
KBUILD_VERBOSE = 0
|
KBUILD_VERBOSE = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Call a source code checker (by default, "sparse") as part of the
|
ifeq ($(KBUILD_VERBOSE),1)
|
||||||
# C compilation.
|
quiet =
|
||||||
#
|
Q =
|
||||||
# Use 'make C=1' to enable checking of only re-compiled files.
|
else
|
||||||
# Use 'make C=2' to enable checking of *all* source files, regardless
|
quiet=quiet_
|
||||||
# of whether they are re-compiled or not.
|
Q = @
|
||||||
#
|
|
||||||
# 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
|
endif
|
||||||
|
|
||||||
# Use make M=dir to specify directory of external module to build
|
# If the user is running make -s (silent mode), suppress echoing of
|
||||||
# Old syntax make ... SUBDIRS=$PWD is still supported
|
# commands
|
||||||
# Setting the environment variable KBUILD_EXTMOD take precedence
|
|
||||||
ifdef SUBDIRS
|
ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4
|
||||||
KBUILD_EXTMOD ?= $(SUBDIRS)
|
ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),)
|
||||||
|
quiet=silent_
|
||||||
|
endif
|
||||||
|
else # make-3.8x
|
||||||
|
ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
|
||||||
|
quiet=silent_
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ("$(origin M)", "command line")
|
export quiet Q KBUILD_VERBOSE
|
||||||
KBUILD_EXTMOD := $(M)
|
|
||||||
endif
|
|
||||||
|
|
||||||
# kbuild supports saving output files in a separate directory.
|
# kbuild supports saving output files in a separate directory.
|
||||||
# To locate output files in a separate directory two syntaxes are supported.
|
# 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
|
# The O= assignment takes precedence over the KBUILD_OUTPUT environment
|
||||||
# variable.
|
# variable.
|
||||||
|
|
||||||
|
|
||||||
# KBUILD_SRC is set on invocation of make in OBJ directory
|
# 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)
|
# KBUILD_SRC is not intended to be used by the regular user (for now)
|
||||||
ifeq ($(KBUILD_SRC),)
|
ifeq ($(KBUILD_SRC),)
|
||||||
|
@ -131,10 +142,8 @@ $(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make
|
||||||
@:
|
@:
|
||||||
|
|
||||||
sub-make: FORCE
|
sub-make: FORCE
|
||||||
$(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT) \
|
$(Q)$(MAKE) -C $(KBUILD_OUTPUT) KBUILD_SRC=$(CURDIR) \
|
||||||
KBUILD_SRC=$(CURDIR) \
|
-f $(CURDIR)/Makefile $(filter-out _all sub-make,$(MAKECMDGOALS))
|
||||||
KBUILD_EXTMOD="$(KBUILD_EXTMOD)" -f $(CURDIR)/Makefile \
|
|
||||||
$(filter-out _all sub-make,$(MAKECMDGOALS))
|
|
||||||
|
|
||||||
# Leave processing to above invocation of make
|
# Leave processing to above invocation of make
|
||||||
skip-makefile := 1
|
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
|
# We process the rest of the Makefile if this is the final invocation of make
|
||||||
ifeq ($(skip-makefile),)
|
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
|
# If building an external module we do not care about the all: rule
|
||||||
# but instead _all depend on modules
|
# but instead _all depend on modules
|
||||||
PHONY += all
|
PHONY += all
|
||||||
|
@ -153,8 +195,18 @@ else
|
||||||
_all: modules
|
_all: modules
|
||||||
endif
|
endif
|
||||||
|
|
||||||
srctree := $(if $(KBUILD_SRC),$(KBUILD_SRC),$(CURDIR))
|
ifeq ($(KBUILD_SRC),)
|
||||||
objtree := $(CURDIR)
|
# 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)
|
src := $(srctree)
|
||||||
obj := $(objtree)
|
obj := $(objtree)
|
||||||
|
|
||||||
|
@ -262,52 +314,6 @@ endif
|
||||||
export KBUILD_MODULES KBUILD_BUILTIN
|
export KBUILD_MODULES KBUILD_BUILTIN
|
||||||
export KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD
|
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
|
# Look for make include files relative to root of kernel src
|
||||||
MAKEFLAGS += --include-dir=$(srctree)
|
MAKEFLAGS += --include-dir=$(srctree)
|
||||||
|
|
||||||
|
@ -1308,7 +1314,7 @@ help:
|
||||||
@echo ''
|
@echo ''
|
||||||
@echo 'Other generic targets:'
|
@echo 'Other generic targets:'
|
||||||
@echo ' all - Build all necessary images depending on configuration'
|
@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/ - Build all files in dir and below'
|
||||||
@echo ' dir/file.[oisS] - Build specified target only'
|
@echo ' dir/file.[oisS] - Build specified target only'
|
||||||
@echo ' dir/file.lst - Build specified mixed source/assembly 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 ' tags/ctags - Generate ctags file for editors'
|
||||||
@echo ' etags - Generate etags file for editors'
|
@echo ' etags - Generate etags file for editors'
|
||||||
@echo ' cscope - Generate cscope index'
|
@echo ' cscope - Generate cscope index'
|
||||||
@echo ' ubootrelease - Output the release version string'
|
@echo ' ubootrelease - Output the release version string (use with make -s)'
|
||||||
@echo ' ubootversion - Output the version stored in Makefile'
|
@echo ' ubootversion - Output the version stored in Makefile (use with make -s)'
|
||||||
@echo ''
|
@echo ''
|
||||||
@echo 'Static analysers'
|
@echo 'Static analysers'
|
||||||
@echo ' checkstack - Generate a list of stack hogs'
|
@echo ' checkstack - Generate a list of stack hogs'
|
||||||
|
|
|
@ -89,9 +89,12 @@ PHONY += create_symlink
|
||||||
create_symlink:
|
create_symlink:
|
||||||
ifneq ($(KBUILD_SRC),)
|
ifneq ($(KBUILD_SRC),)
|
||||||
$(Q)mkdir -p include/asm
|
$(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
|
endif
|
||||||
$(Q)ln -fsn $(srctree)/arch/$(ARCH)/include/asm/arch-$(if $(SOC),$(SOC),$(CPU)) \
|
|
||||||
$(if $(KBUILD_SRC),,arch/$(ARCH)/)include/asm/arch
|
|
||||||
|
|
||||||
PHONY += FORCE
|
PHONY += FORCE
|
||||||
FORCE:
|
FORCE:
|
||||||
|
|
|
@ -157,7 +157,7 @@ HOSTCFLAGS_sha256.o := -pedantic
|
||||||
#HOSTCFLAGS_mpc86x_clk.o := -pedantic
|
#HOSTCFLAGS_mpc86x_clk.o := -pedantic
|
||||||
|
|
||||||
quiet_cmd_wrap = WRAP $@
|
quiet_cmd_wrap = WRAP $@
|
||||||
cmd_wrap = echo "\#include <$(srctree)/$(patsubst $(obj)/%,%,$@)>" >$@
|
cmd_wrap = echo "\#include <../$(patsubst $(obj)/%,%,$@)>" >$@
|
||||||
|
|
||||||
$(obj)/lib/%.c $(obj)/common/%.c:
|
$(obj)/lib/%.c $(obj)/common/%.c:
|
||||||
$(call cmd,wrap)
|
$(call cmd,wrap)
|
||||||
|
|
Loading…
Reference in New Issue