kbuild: parse C= and M= before changing the working directory
If Kbuild recurses to the top Makefile (for example, 'make deb-pkg'), C= and M= are parsed over again, needlessly. Parse them before changing the working directory. After that, sub_make_done is set to 1, so they are parsed just once. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
This commit is contained in:
Родитель
30cef68d2d
Коммит
bcf637f54f
61
Makefile
61
Makefile
|
@ -100,6 +100,36 @@ endif
|
||||||
|
|
||||||
export quiet Q KBUILD_VERBOSE
|
export quiet Q KBUILD_VERBOSE
|
||||||
|
|
||||||
|
# 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/dev-tools/sparse.rst" 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
|
||||||
|
|
||||||
|
export KBUILD_CHECKSRC
|
||||||
|
|
||||||
|
# Use make M=dir or set the environment variable KBUILD_EXTMOD to specify the
|
||||||
|
# directory of external module to build. Setting M= takes precedence.
|
||||||
|
ifeq ("$(origin M)", "command line")
|
||||||
|
KBUILD_EXTMOD := $(M)
|
||||||
|
endif
|
||||||
|
|
||||||
|
$(if $(word 2, $(KBUILD_EXTMOD)), \
|
||||||
|
$(error building multiple external modules is not supported))
|
||||||
|
|
||||||
|
export KBUILD_EXTMOD
|
||||||
|
|
||||||
# Kbuild will save output files in the current working directory.
|
# Kbuild will save output files in the current working directory.
|
||||||
# This does not need to match to the root of the kernel source tree.
|
# This does not need to match to the root of the kernel source tree.
|
||||||
#
|
#
|
||||||
|
@ -194,36 +224,6 @@ ifeq ($(need-sub-make),)
|
||||||
# so that IDEs/editors are able to understand relative filenames.
|
# so that IDEs/editors are able to understand relative filenames.
|
||||||
MAKEFLAGS += --no-print-directory
|
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/dev-tools/sparse.rst" 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 or set the environment variable KBUILD_EXTMOD to specify the
|
|
||||||
# directory of external module to build. Setting M= takes precedence.
|
|
||||||
ifeq ("$(origin M)", "command line")
|
|
||||||
KBUILD_EXTMOD := $(M)
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(if $(word 2, $(KBUILD_EXTMOD)), \
|
|
||||||
$(error building multiple external modules is not supported))
|
|
||||||
|
|
||||||
export KBUILD_CHECKSRC KBUILD_EXTMOD
|
|
||||||
|
|
||||||
extmod-prefix = $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/)
|
|
||||||
|
|
||||||
ifeq ($(abs_srctree),$(abs_objtree))
|
ifeq ($(abs_srctree),$(abs_objtree))
|
||||||
# building in the source tree
|
# building in the source tree
|
||||||
srctree := .
|
srctree := .
|
||||||
|
@ -1093,6 +1093,7 @@ endif # CONFIG_BPF
|
||||||
|
|
||||||
PHONY += prepare0
|
PHONY += prepare0
|
||||||
|
|
||||||
|
extmod-prefix = $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/)
|
||||||
export MODORDER := $(extmod-prefix)modules.order
|
export MODORDER := $(extmod-prefix)modules.order
|
||||||
export MODULES_NSDEPS := $(extmod-prefix)modules.nsdeps
|
export MODULES_NSDEPS := $(extmod-prefix)modules.nsdeps
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче