forked from mirrors/linux
Kbuild conventionally uses $(obj)/ for generated files, and $(src)/ for
checked-in source files. It is merely a convention without any functional
difference. In fact, $(obj) and $(src) are exactly the same, as defined
in scripts/Makefile.build:
src := $(obj)
When the kernel is built in a separate output directory, $(src) does
not accurately reflect the source directory location. While Kbuild
resolves this discrepancy by specifying VPATH=$(srctree) to search for
source files, it does not cover all cases. For example, when adding a
header search path for local headers, -I$(srctree)/$(src) is typically
passed to the compiler.
This introduces inconsistency between upstream and downstream Makefiles
because $(src) is used instead of $(srctree)/$(src) for the latter.
To address this inconsistency, this commit changes the semantics of
$(src) so that it always points to the directory in the source tree.
Going forward, the variables used in Makefiles will have the following
meanings:
$(obj) - directory in the object tree
$(src) - directory in the source tree (changed by this commit)
$(objtree) - the top of the kernel object tree
$(srctree) - the top of the kernel source tree
Consequently, $(srctree)/$(src) in upstream Makefiles need to be replaced
with $(src).
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Nicolas Schier <nicolas@fjasle.eu>
25 lines
645 B
Makefile
25 lines
645 B
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
ifdef building_out_of_srctree
|
|
|
|
symlinks := $(patsubst $(src)/%,%,$(wildcard $(src)/*.py))
|
|
|
|
quiet_cmd_symlink = SYMLINK $@
|
|
cmd_symlink = ln -fsn $(patsubst $(obj)/%,$(abspath $(srctree))/$(src)/%,$@) $@
|
|
|
|
always-y += $(symlinks)
|
|
$(addprefix $(obj)/, $(symlinks)): FORCE
|
|
$(call if_changed,symlink)
|
|
|
|
endif
|
|
|
|
quiet_cmd_gen_constants_py = GEN $@
|
|
cmd_gen_constants_py = \
|
|
$(CPP) -E -x c -P $(c_flags) $< > $@ ;\
|
|
sed -i '1,/<!-- end-c-headers -->/d;' $@
|
|
|
|
always-y += constants.py
|
|
$(obj)/constants.py: $(src)/constants.py.in FORCE
|
|
$(call if_changed_dep,gen_constants_py)
|
|
|
|
clean-files := *.pyc *.pyo
|