mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-25 19:42:19 +00:00
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>
52 lines
1.4 KiB
Makefile
52 lines
1.4 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
kapi := arch/$(SRCARCH)/include/generated/asm
|
|
uapi := arch/$(SRCARCH)/include/generated/uapi/asm
|
|
|
|
$(shell mkdir -p $(uapi) $(kapi))
|
|
|
|
syshdr := $(srctree)/scripts/syscallhdr.sh
|
|
sysnr := $(src)/syscallnr.sh
|
|
systbl := $(srctree)/scripts/syscalltbl.sh
|
|
|
|
quiet_cmd_syshdr = SYSHDR $@
|
|
cmd_syshdr = $(CONFIG_SHELL) $(syshdr) --offset __NR_Linux $< $@
|
|
|
|
quiet_cmd_sysnr = SYSNR $@
|
|
cmd_sysnr = $(CONFIG_SHELL) '$(sysnr)' '$<' '$@' \
|
|
'$(sysnr_abis_$(basetarget))' \
|
|
'$(sysnr_pfx_$(basetarget))'
|
|
|
|
quiet_cmd_systbl = SYSTBL $@
|
|
cmd_systbl = $(CONFIG_SHELL) $(systbl) $< $@
|
|
|
|
$(uapi)/unistd_%.h: $(src)/syscall_%.tbl $(syshdr) FORCE
|
|
$(call if_changed,syshdr)
|
|
|
|
sysnr_pfx_unistd_nr_n32 := N32
|
|
sysnr_pfx_unistd_nr_n64 := 64
|
|
sysnr_pfx_unistd_nr_o32 := O32
|
|
|
|
$(kapi)/unistd_nr_%.h: $(src)/syscall_%.tbl $(sysnr) FORCE
|
|
$(call if_changed,sysnr)
|
|
|
|
$(kapi)/syscall_table_%.h: $(src)/syscall_%.tbl $(systbl) FORCE
|
|
$(call if_changed,systbl)
|
|
|
|
uapisyshdr-y += unistd_n32.h \
|
|
unistd_n64.h \
|
|
unistd_o32.h
|
|
kapisyshdr-y += syscall_table_n32.h \
|
|
syscall_table_n64.h \
|
|
syscall_table_o32.h \
|
|
unistd_nr_n32.h \
|
|
unistd_nr_n64.h \
|
|
unistd_nr_o32.h
|
|
|
|
uapisyshdr-y := $(addprefix $(uapi)/, $(uapisyshdr-y))
|
|
kapisyshdr-y := $(addprefix $(kapi)/, $(kapisyshdr-y))
|
|
targets += $(addprefix ../../../../, $(uapisyshdr-y) $(kapisyshdr-y))
|
|
|
|
PHONY += all
|
|
all: $(uapisyshdr-y) $(kapisyshdr-y)
|
|
@:
|