mirror of
https://github.com/Dasharo/linux.git
synced 2026-03-06 15:25:10 -08:00
kbuild: use $(src) instead of $(srctree)/$(src) for source directory
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>
This commit is contained in:
@@ -76,22 +76,22 @@ loop_cmd = $(echo-cmd) $(cmd_$(1)) || exit;
|
||||
# * dest folder relative to $(BUILDDIR) and
|
||||
# * cache folder relative to $(BUILDDIR)/.doctrees
|
||||
# $4 dest subfolder e.g. "man" for man pages at userspace-api/media/man
|
||||
# $5 reST source folder relative to $(srctree)/$(src),
|
||||
# $5 reST source folder relative to $(src),
|
||||
# e.g. "userspace-api/media" for the linux-tv book-set at ./Documentation/userspace-api/media
|
||||
|
||||
quiet_cmd_sphinx = SPHINX $@ --> file://$(abspath $(BUILDDIR)/$3/$4)
|
||||
cmd_sphinx = $(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/userspace-api/media $2 && \
|
||||
PYTHONDONTWRITEBYTECODE=1 \
|
||||
BUILDDIR=$(abspath $(BUILDDIR)) SPHINX_CONF=$(abspath $(srctree)/$(src)/$5/$(SPHINX_CONF)) \
|
||||
BUILDDIR=$(abspath $(BUILDDIR)) SPHINX_CONF=$(abspath $(src)/$5/$(SPHINX_CONF)) \
|
||||
$(PYTHON3) $(srctree)/scripts/jobserver-exec \
|
||||
$(CONFIG_SHELL) $(srctree)/Documentation/sphinx/parallel-wrapper.sh \
|
||||
$(SPHINXBUILD) \
|
||||
-b $2 \
|
||||
-c $(abspath $(srctree)/$(src)) \
|
||||
-c $(abspath $(src)) \
|
||||
-d $(abspath $(BUILDDIR)/.doctrees/$3) \
|
||||
-D version=$(KERNELVERSION) -D release=$(KERNELRELEASE) \
|
||||
$(ALLSPHINXOPTS) \
|
||||
$(abspath $(srctree)/$(src)/$5) \
|
||||
$(abspath $(src)/$5) \
|
||||
$(abspath $(BUILDDIR)/$3/$4) && \
|
||||
if [ "x$(DOCS_CSS)" != "x" ]; then \
|
||||
cp $(if $(patsubst /%,,$(DOCS_CSS)),$(abspath $(srctree)/$(DOCS_CSS)),$(DOCS_CSS)) $(BUILDDIR)/$3/_static/; \
|
||||
|
||||
@@ -25,7 +25,7 @@ quiet_cmd_extract_ex = DTEX $@
|
||||
$(obj)/%.example.dts: $(src)/%.yaml check_dtschema_version FORCE
|
||||
$(call if_changed,extract_ex)
|
||||
|
||||
find_all_cmd = find $(srctree)/$(src) \( -name '*.yaml' ! \
|
||||
find_all_cmd = find $(src) \( -name '*.yaml' ! \
|
||||
-name 'processed-schema*' \)
|
||||
|
||||
find_cmd = $(find_all_cmd) | \
|
||||
@@ -37,12 +37,12 @@ CHK_DT_EXAMPLES := $(patsubst $(srctree)/%.yaml,%.example.dtb, $(shell $(find_cm
|
||||
quiet_cmd_yamllint = LINT $(src)
|
||||
cmd_yamllint = ($(find_cmd) | \
|
||||
xargs -n200 -P$$(nproc) \
|
||||
$(DT_SCHEMA_LINT) -f parsable -c $(srctree)/$(src)/.yamllint >&2) \
|
||||
$(DT_SCHEMA_LINT) -f parsable -c $(src)/.yamllint >&2) \
|
||||
&& touch $@ || true
|
||||
|
||||
quiet_cmd_chk_bindings = CHKDT $(src)
|
||||
cmd_chk_bindings = ($(find_cmd) | \
|
||||
xargs -n200 -P$$(nproc) $(DT_DOC_CHECKER) -u $(srctree)/$(src)) \
|
||||
xargs -n200 -P$$(nproc) $(DT_DOC_CHECKER) -u $(src)) \
|
||||
&& touch $@ || true
|
||||
|
||||
quiet_cmd_mk_schema = SCHEMA $@
|
||||
|
||||
@@ -346,7 +346,7 @@ ccflags-y, asflags-y and ldflags-y
|
||||
Example::
|
||||
|
||||
#arch/cris/boot/compressed/Makefile
|
||||
ldflags-y += -T $(srctree)/$(src)/decompress_$(arch-y).lds
|
||||
ldflags-y += -T $(src)/decompress_$(arch-y).lds
|
||||
|
||||
subdir-ccflags-y, subdir-asflags-y
|
||||
The two flags listed above are similar to ccflags-y and asflags-y.
|
||||
@@ -426,14 +426,14 @@ path to prerequisite files and target files.
|
||||
Two variables are used when defining custom rules:
|
||||
|
||||
$(src)
|
||||
$(src) is a relative path which points to the directory
|
||||
where the Makefile is located. Always use $(src) when
|
||||
$(src) is the directory where the Makefile is located. Always use $(src) when
|
||||
referring to files located in the src tree.
|
||||
|
||||
$(obj)
|
||||
$(obj) is a relative path which points to the directory
|
||||
where the target is saved. Always use $(obj) when
|
||||
referring to generated files.
|
||||
$(obj) is the directory where the target is saved. Always use $(obj) when
|
||||
referring to generated files. Use $(obj) for pattern rules that need to work
|
||||
for both generated files and real sources (VPATH will help to find the
|
||||
prerequisites not only in the object tree but also in the source tree).
|
||||
|
||||
Example::
|
||||
|
||||
|
||||
7
Makefile
7
Makefile
@@ -263,7 +263,14 @@ srctree := $(abs_srctree)
|
||||
endif
|
||||
|
||||
objtree := .
|
||||
|
||||
VPATH :=
|
||||
|
||||
ifeq ($(KBUILD_EXTMOD),)
|
||||
ifdef building_out_of_srctree
|
||||
VPATH := $(srctree)
|
||||
endif
|
||||
endif
|
||||
|
||||
export building_out_of_srctree srctree objtree VPATH
|
||||
|
||||
|
||||
@@ -10,8 +10,7 @@ obj-y += $(builtindtb-y).dtb.o
|
||||
dtb-y := $(builtindtb-y).dtb
|
||||
|
||||
# for CONFIG_OF_ALL_DTBS test
|
||||
dtstree := $(srctree)/$(src)
|
||||
dtb- := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
|
||||
dtb- := $(patsubst $(src)/%.dts,%.dtb, $(wildcard $(src)/*.dts))
|
||||
|
||||
# board-specific dtc flags
|
||||
DTC_FLAGS_hsdk += --pad 20
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
obj-$(CONFIG_FPE_NWFPE) += nwfpe/
|
||||
# Put arch/arm/fastfpe/ to use this.
|
||||
obj-$(CONFIG_FPE_FASTFPE) += $(patsubst $(srctree)/$(src)/%,%,$(wildcard $(srctree)/$(src)/fastfpe/))
|
||||
obj-$(CONFIG_FPE_FASTFPE) += $(patsubst $(src)/%,%,$(wildcard $(src)/fastfpe/))
|
||||
obj-$(CONFIG_VFP) += vfp/
|
||||
obj-$(CONFIG_XEN) += xen/
|
||||
obj-$(CONFIG_VDSO) += vdso/
|
||||
|
||||
@@ -25,8 +25,7 @@ targets := Image zImage xipImage bootpImage uImage
|
||||
|
||||
ifeq ($(CONFIG_XIP_KERNEL),y)
|
||||
|
||||
cmd_deflate_xip_data = $(CONFIG_SHELL) -c \
|
||||
'$(srctree)/$(src)/deflate_xip_data.sh $< $@'
|
||||
cmd_deflate_xip_data = $(CONFIG_SHELL) -c '$(src)/deflate_xip_data.sh $< $@'
|
||||
|
||||
ifeq ($(CONFIG_XIP_DEFLATED_DATA),y)
|
||||
quiet_cmd_mkxip = XIPZ $@
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# Copyright 2009 Simtec Electronics
|
||||
|
||||
include $(srctree)/$(src)/Makefile.s3c64xx
|
||||
include $(src)/Makefile.s3c64xx
|
||||
|
||||
# Objects we always build independent of SoC choice
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# Makefile for the linux kernel.
|
||||
#
|
||||
ccflags-y := -I$(srctree)/$(src)/include
|
||||
ccflags-y := -I$(src)/include
|
||||
|
||||
orion-gpio-$(CONFIG_GPIOLIB) += gpio.o
|
||||
obj-$(CONFIG_PLAT_ORION_LEGACY) += irq.o pcie.o time.o common.o mpp.o
|
||||
|
||||
@@ -9,7 +9,7 @@ gen := arch/$(ARCH)/include/generated
|
||||
kapi := $(gen)/asm
|
||||
uapi := $(gen)/uapi/asm
|
||||
syshdr := $(srctree)/scripts/syscallhdr.sh
|
||||
sysnr := $(srctree)/$(src)/syscallnr.sh
|
||||
sysnr := $(src)/syscallnr.sh
|
||||
systbl := $(srctree)/scripts/syscalltbl.sh
|
||||
syscall := $(src)/syscall.tbl
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE
|
||||
$(call if_changed,objcopy)
|
||||
|
||||
# Generate VDSO offsets using helper script
|
||||
gen-vdsosym := $(srctree)/$(src)/gen_vdso_offsets.sh
|
||||
gen-vdsosym := $(src)/gen_vdso_offsets.sh
|
||||
quiet_cmd_vdsosym = VDSOSYM $@
|
||||
cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Makefile for Kernel-based Virtual Machine module
|
||||
#
|
||||
|
||||
ccflags-y += -I $(srctree)/$(src)
|
||||
ccflags-y += -I $(src)
|
||||
|
||||
include $(srctree)/virt/kvm/Makefile.kvm
|
||||
|
||||
@@ -30,7 +30,7 @@ define rule_gen_hyp_constants
|
||||
$(call filechk,offsets,__HYP_CONSTANTS_H__)
|
||||
endef
|
||||
|
||||
CFLAGS_hyp-constants.o = -I $(srctree)/$(src)/hyp/include
|
||||
CFLAGS_hyp-constants.o = -I $(src)/hyp/include
|
||||
$(obj)/hyp-constants.s: $(src)/hyp/hyp-constants.c FORCE
|
||||
$(call if_changed_dep,cc_s_c)
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Makefile for Kernel-based Virtual Machine module, HYP part
|
||||
#
|
||||
|
||||
incdir := $(srctree)/$(src)/include
|
||||
incdir := $(src)/include
|
||||
subdir-asflags-y := -I$(incdir)
|
||||
subdir-ccflags-y := -I$(incdir)
|
||||
|
||||
|
||||
@@ -1,4 +1,2 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
dtstree := $(srctree)/$(src)
|
||||
|
||||
dtb-y := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
|
||||
dtb-y := $(patsubst $(src)/%.dts,%.dtb, $(wildcard $(src)/*.dts))
|
||||
|
||||
@@ -57,4 +57,4 @@ quiet_cmd_vdsold = VDSOLD $@
|
||||
# Extracts symbol offsets from the VDSO, converting them into an assembly file
|
||||
# that contains the same symbols at the same offsets.
|
||||
quiet_cmd_so2s = SO2S $@
|
||||
cmd_so2s = $(NM) -D $< | $(srctree)/$(src)/so2s.sh > $@
|
||||
cmd_so2s = $(NM) -D $< | $(src)/so2s.sh > $@
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Makefile for LoongArch KVM support
|
||||
#
|
||||
|
||||
ccflags-y += -I $(srctree)/$(src)
|
||||
ccflags-y += -I $(src)
|
||||
|
||||
include $(srctree)/virt/kvm/Makefile.kvm
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ quiet_cmd_vdsoas_o_S = AS $@
|
||||
cmd_vdsoas_o_S = $(CC) $(a_flags) -c -o $@ $<
|
||||
|
||||
# Generate VDSO offsets using helper script
|
||||
gen-vdsosym := $(srctree)/$(src)/gen_vdso_offsets.sh
|
||||
gen-vdsosym := $(src)/gen_vdso_offsets.sh
|
||||
quiet_cmd_vdsosym = VDSOSYM $@
|
||||
cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ uapi := arch/$(SRCARCH)/include/generated/uapi/asm
|
||||
$(shell mkdir -p $(uapi) $(kapi))
|
||||
|
||||
syshdr := $(srctree)/scripts/syscallhdr.sh
|
||||
sysnr := $(srctree)/$(src)/syscallnr.sh
|
||||
sysnr := $(src)/syscallnr.sh
|
||||
systbl := $(srctree)/scripts/syscalltbl.sh
|
||||
|
||||
quiet_cmd_syshdr = SYSHDR $@
|
||||
|
||||
@@ -43,8 +43,8 @@ CFLAGS_vgettimeofday.o = -include $(c-gettimeofday-y)
|
||||
# config-n32-o32-env.c prepares the environment to build a 32bit vDSO
|
||||
# library on a 64bit kernel.
|
||||
# Note: Needs to be included before than the generic library.
|
||||
CFLAGS_vgettimeofday-o32.o = -include $(srctree)/$(src)/config-n32-o32-env.c -include $(c-gettimeofday-y)
|
||||
CFLAGS_vgettimeofday-n32.o = -include $(srctree)/$(src)/config-n32-o32-env.c -include $(c-gettimeofday-y)
|
||||
CFLAGS_vgettimeofday-o32.o = -include $(src)/config-n32-o32-env.c -include $(c-gettimeofday-y)
|
||||
CFLAGS_vgettimeofday-n32.o = -include $(src)/config-n32-o32-env.c -include $(c-gettimeofday-y)
|
||||
endif
|
||||
|
||||
CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE)
|
||||
|
||||
@@ -2,5 +2,4 @@
|
||||
|
||||
obj-y := $(patsubst %.dts,%.dtb.o,$(CONFIG_NIOS2_DTB_SOURCE))
|
||||
|
||||
dtstree := $(srctree)/$(src)
|
||||
dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
|
||||
dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(src)/%.dts,%.dtb, $(wildcard $(src)/*.dts))
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user