Kbuild updates for v5.14
- Increase the -falign-functions alignment for the debug option. - Remove ugly libelf checks from the top Makefile. - Make the silent build (-s) more silent. - Re-compile the kernel if KBUILD_BUILD_TIMESTAMP is specified. - Various script cleanups -----BEGIN PGP SIGNATURE----- iQJJBAABCgAzFiEEbmPs18K1szRHjPqEPYsBB53g2wYFAmDon90VHG1hc2FoaXJv eUBrZXJuZWwub3JnAAoJED2LAQed4NsGWFUP/RGNwlGD/YV1xg0ZmM0/ynBzzOy2 3dcr3etJZpipQDeqnHy3jt0esgMVlbkTdrHvP+2hpNaeXFwjF1fDHjhur9m8ZkVD efOA6nugOnNwhy2G3BvtCJv+Vhb+KZ0nNLB27z3Bl0LGP6LJdMRNAxFBJMv4k3aR F3sABugwCpnT2/YtuprxRl2/3/CyLur5NjY24FD+ugON3JIWfl6ETbHeFmxr1JE4 mE+zaN5AwYuSuH9LpdRy85XVCcW/FFqP/DwOFllVvCCCNvvS0KWYSNHWfEsKdR75 hmAAaS/rpi2eaL0vp88sNhAtYnhMSf+uFu0fyfYeWZuJqMt4Xz5xZKAzDsifCdif aQ6UEPDjiKABh9gpX26BMd2CXzkGR+L4qZ7iBPfO586Iy7opajrFX9kIj5U7ZtCl wsPat/9+18xpVJOTe0sss3idId7Ft4cRoW5FQMEAW2EWJ9fXAG1yDxEREj1V5gFx sMXtpmCoQag968qjfARvP08s3MB1P4Ij6tXcioGqHuEWeJLxOMK/KWyafQUg611d 0kSWNO0OMo+odBj6j/vM+MIIaPhgwtZnPgw2q4uHGMcemzQxaEvGW+G/5a5qEpTv SKm8W24wXplNot4tuTGWq5/jANRJcMvVsyC48DYT81OZEOWrIc0kDV4v4qZToTxW 97jn1NKa2H6L0J1V =Za8V -----END PGP SIGNATURE----- Merge tag 'kbuild-v5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild Pull Kbuild updates from Masahiro Yamada: - Increase the -falign-functions alignment for the debug option. - Remove ugly libelf checks from the top Makefile. - Make the silent build (-s) more silent. - Re-compile the kernel if KBUILD_BUILD_TIMESTAMP is specified. - Various script cleanups * tag 'kbuild-v5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (27 commits) scripts: add generic syscallnr.sh scripts: check duplicated syscall number in syscall table sparc: syscalls: use pattern rules to generate syscall headers parisc: syscalls: use pattern rules to generate syscall headers nds32: add arch/nds32/boot/.gitignore kbuild: mkcompile_h: consider timestamp if KBUILD_BUILD_TIMESTAMP is set kbuild: modpost: Explicitly warn about unprototyped symbols kbuild: remove trailing slashes from $(KBUILD_EXTMOD) kconfig.h: explain IS_MODULE(), IS_ENABLED() kconfig: constify long_opts scripts/setlocalversion: simplify the short version part scripts/setlocalversion: factor out 12-chars hash construction scripts/setlocalversion: add more comments to -dirty flag detection scripts/setlocalversion: remove workaround for old make-kpkg scripts/setlocalversion: remove mercurial, svn and git-svn supports kbuild: clean up ${quiet} checks in shell scripts kbuild: sink stdout from cmd for silent build init: use $(call cmd,) for generating include/generated/compile.h kbuild: merge scripts/mkmakefile to top Makefile sh: move core-y in arch/sh/Makefile to arch/sh/Kbuild ...
This commit is contained in:
Коммит
81361b837a
130
Makefile
130
Makefile
|
@ -129,6 +129,11 @@ endif
|
|||
$(if $(word 2, $(KBUILD_EXTMOD)), \
|
||||
$(error building multiple external modules is not supported))
|
||||
|
||||
# Remove trailing slashes
|
||||
ifneq ($(filter %/, $(KBUILD_EXTMOD)),)
|
||||
KBUILD_EXTMOD := $(shell dirname $(KBUILD_EXTMOD).)
|
||||
endif
|
||||
|
||||
export KBUILD_EXTMOD
|
||||
|
||||
# Kbuild will save output files in the current working directory.
|
||||
|
@ -544,14 +549,21 @@ scripts_basic:
|
|||
$(Q)rm -f .tmp_quiet_recordmcount
|
||||
|
||||
PHONY += outputmakefile
|
||||
ifdef building_out_of_srctree
|
||||
# Before starting out-of-tree build, make sure the source tree is clean.
|
||||
# outputmakefile generates a Makefile in the output directory, if using a
|
||||
# separate output directory. This allows convenient use of make in the
|
||||
# output directory.
|
||||
# At the same time when output Makefile generated, generate .gitignore to
|
||||
# ignore whole output directory
|
||||
|
||||
quiet_cmd_makefile = GEN Makefile
|
||||
cmd_makefile = { \
|
||||
echo "\# Automatically generated by $(srctree)/Makefile: don't edit"; \
|
||||
echo "include $(srctree)/Makefile"; \
|
||||
} > Makefile
|
||||
|
||||
outputmakefile:
|
||||
ifdef building_out_of_srctree
|
||||
$(Q)if [ -f $(srctree)/.config -o \
|
||||
-d $(srctree)/include/config -o \
|
||||
-d $(srctree)/arch/$(SRCARCH)/include/generated ]; then \
|
||||
|
@ -562,7 +574,7 @@ ifdef building_out_of_srctree
|
|||
false; \
|
||||
fi
|
||||
$(Q)ln -fsn $(srctree) source
|
||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile $(srctree)
|
||||
$(call cmd,makefile)
|
||||
$(Q)test -e .gitignore || \
|
||||
{ echo "# this is build directory, ignore it"; echo "*"; } > .gitignore
|
||||
endif
|
||||
|
@ -658,7 +670,7 @@ endif
|
|||
|
||||
ifeq ($(KBUILD_EXTMOD),)
|
||||
# Objects we will link into vmlinux / subdirs we need to visit
|
||||
core-y := init/ usr/
|
||||
core-y := init/ usr/ arch/$(SRCARCH)/
|
||||
drivers-y := drivers/ sound/
|
||||
drivers-$(CONFIG_SAMPLES) += samples/
|
||||
drivers-$(CONFIG_NET) += net/
|
||||
|
@ -961,8 +973,8 @@ KBUILD_CFLAGS += $(CC_FLAGS_CFI)
|
|||
export CC_FLAGS_CFI
|
||||
endif
|
||||
|
||||
ifdef CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_32B
|
||||
KBUILD_CFLAGS += -falign-functions=32
|
||||
ifdef CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B
|
||||
KBUILD_CFLAGS += -falign-functions=64
|
||||
endif
|
||||
|
||||
# arch Makefile may override CC so keep this after arch Makefile is included
|
||||
|
@ -1089,41 +1101,6 @@ export INSTALL_DTBS_PATH ?= $(INSTALL_PATH)/dtbs/$(KERNELRELEASE)
|
|||
MODLIB = $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
|
||||
export MODLIB
|
||||
|
||||
HOST_LIBELF_LIBS = $(shell pkg-config libelf --libs 2>/dev/null || echo -lelf)
|
||||
|
||||
has_libelf = $(call try-run,\
|
||||
echo "int main() {}" | $(HOSTCC) $(KBUILD_HOSTLDFLAGS) -xc -o /dev/null $(HOST_LIBELF_LIBS) -,1,0)
|
||||
|
||||
ifdef CONFIG_STACK_VALIDATION
|
||||
ifeq ($(has_libelf),1)
|
||||
objtool_target := tools/objtool FORCE
|
||||
else
|
||||
SKIP_STACK_VALIDATION := 1
|
||||
export SKIP_STACK_VALIDATION
|
||||
endif
|
||||
endif
|
||||
|
||||
PHONY += resolve_btfids_clean
|
||||
|
||||
resolve_btfids_O = $(abspath $(objtree))/tools/bpf/resolve_btfids
|
||||
|
||||
# tools/bpf/resolve_btfids directory might not exist
|
||||
# in output directory, skip its clean in that case
|
||||
resolve_btfids_clean:
|
||||
ifneq ($(wildcard $(resolve_btfids_O)),)
|
||||
$(Q)$(MAKE) -sC $(srctree)/tools/bpf/resolve_btfids O=$(resolve_btfids_O) clean
|
||||
endif
|
||||
|
||||
ifdef CONFIG_BPF
|
||||
ifdef CONFIG_DEBUG_INFO_BTF
|
||||
ifeq ($(has_libelf),1)
|
||||
resolve_btfids_target := tools/bpf/resolve_btfids FORCE
|
||||
else
|
||||
ERROR_RESOLVE_BTFIDS := 1
|
||||
endif
|
||||
endif # CONFIG_DEBUG_INFO_BTF
|
||||
endif # CONFIG_BPF
|
||||
|
||||
PHONY += prepare0
|
||||
|
||||
export extmod_prefix = $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/)
|
||||
|
@ -1235,7 +1212,7 @@ prepare0: archprepare
|
|||
$(Q)$(MAKE) $(build)=.
|
||||
|
||||
# All the preparing..
|
||||
prepare: prepare0 prepare-objtool prepare-resolve_btfids
|
||||
prepare: prepare0
|
||||
|
||||
PHONY += remove-stale-files
|
||||
remove-stale-files:
|
||||
|
@ -1252,26 +1229,6 @@ uapi-asm-generic:
|
|||
$(Q)$(MAKE) $(asm-generic)=arch/$(SRCARCH)/include/generated/uapi/asm \
|
||||
generic=include/uapi/asm-generic
|
||||
|
||||
PHONY += prepare-objtool prepare-resolve_btfids
|
||||
prepare-objtool: $(objtool_target)
|
||||
ifeq ($(SKIP_STACK_VALIDATION),1)
|
||||
ifdef CONFIG_FTRACE_MCOUNT_USE_OBJTOOL
|
||||
@echo "error: Cannot generate __mcount_loc for CONFIG_DYNAMIC_FTRACE=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel" >&2
|
||||
@false
|
||||
endif
|
||||
ifdef CONFIG_UNWINDER_ORC
|
||||
@echo "error: Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel" >&2
|
||||
@false
|
||||
else
|
||||
@echo "warning: Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel" >&2
|
||||
endif
|
||||
endif
|
||||
|
||||
prepare-resolve_btfids: $(resolve_btfids_target)
|
||||
ifeq ($(ERROR_RESOLVE_BTFIDS),1)
|
||||
@echo "error: Cannot resolve BTF IDs for CONFIG_DEBUG_INFO_BTF, please install libelf-dev, libelf-devel or elfutils-libelf-devel" >&2
|
||||
@false
|
||||
endif
|
||||
# Generate some files
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
|
@ -1359,6 +1316,43 @@ PHONY += scripts_unifdef
|
|||
scripts_unifdef: scripts_basic
|
||||
$(Q)$(MAKE) $(build)=scripts scripts/unifdef
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Tools
|
||||
|
||||
ifdef CONFIG_STACK_VALIDATION
|
||||
prepare: tools/objtool
|
||||
endif
|
||||
|
||||
ifdef CONFIG_BPF
|
||||
ifdef CONFIG_DEBUG_INFO_BTF
|
||||
prepare: tools/bpf/resolve_btfids
|
||||
endif
|
||||
endif
|
||||
|
||||
PHONY += resolve_btfids_clean
|
||||
|
||||
resolve_btfids_O = $(abspath $(objtree))/tools/bpf/resolve_btfids
|
||||
|
||||
# tools/bpf/resolve_btfids directory might not exist
|
||||
# in output directory, skip its clean in that case
|
||||
resolve_btfids_clean:
|
||||
ifneq ($(wildcard $(resolve_btfids_O)),)
|
||||
$(Q)$(MAKE) -sC $(srctree)/tools/bpf/resolve_btfids O=$(resolve_btfids_O) clean
|
||||
endif
|
||||
|
||||
# Clear a bunch of variables before executing the submake
|
||||
ifeq ($(quiet),silent_)
|
||||
tools_silent=s
|
||||
endif
|
||||
|
||||
tools/: FORCE
|
||||
$(Q)mkdir -p $(objtree)/tools
|
||||
$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/
|
||||
|
||||
tools/%: FORCE
|
||||
$(Q)mkdir -p $(objtree)/tools
|
||||
$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/ $*
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Kernel selftest
|
||||
|
||||
|
@ -1959,20 +1953,6 @@ kernelversion:
|
|||
image_name:
|
||||
@echo $(KBUILD_IMAGE)
|
||||
|
||||
# Clear a bunch of variables before executing the submake
|
||||
|
||||
ifeq ($(quiet),silent_)
|
||||
tools_silent=s
|
||||
endif
|
||||
|
||||
tools/: FORCE
|
||||
$(Q)mkdir -p $(objtree)/tools
|
||||
$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/
|
||||
|
||||
tools/%: FORCE
|
||||
$(Q)mkdir -p $(objtree)/tools
|
||||
$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/ $*
|
||||
|
||||
quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files)))
|
||||
cmd_rmfiles = rm -rf $(rm-files)
|
||||
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
obj-y += kernel/ mm/
|
||||
obj-$(CONFIG_MATHEMU) += math-emu/
|
|
@ -38,8 +38,6 @@ KBUILD_CFLAGS += $(cflags-y) -Wa,-mev6
|
|||
|
||||
head-y := arch/alpha/kernel/head.o
|
||||
|
||||
core-y += arch/alpha/kernel/ arch/alpha/mm/
|
||||
core-$(CONFIG_MATHEMU) += arch/alpha/math-emu/
|
||||
libs-y += arch/alpha/lib/
|
||||
|
||||
# export what is needed by arch/alpha/boot/Makefile
|
||||
|
|
|
@ -85,9 +85,6 @@ KBUILD_LDFLAGS += $(ldflags-y)
|
|||
|
||||
head-y := arch/arc/kernel/head.o
|
||||
|
||||
# See arch/arc/Kbuild for content of core part of the kernel
|
||||
core-y += arch/arc/
|
||||
|
||||
# w/o this dtb won't embed into kernel binary
|
||||
core-y += arch/arc/boot/dts/
|
||||
|
||||
|
|
|
@ -252,7 +252,6 @@ endif
|
|||
|
||||
export TEXT_OFFSET GZFLAGS MMUEXT
|
||||
|
||||
core-y += arch/arm/
|
||||
# If we have a machine-specific directory, then include it in the build.
|
||||
core-y += $(machdirs) $(platdirs)
|
||||
|
||||
|
|
|
@ -149,7 +149,6 @@ KBUILD_CFLAGS += -DKASAN_SHADOW_SCALE_SHIFT=$(KASAN_SHADOW_SCALE_SHIFT)
|
|||
KBUILD_CPPFLAGS += -DKASAN_SHADOW_SCALE_SHIFT=$(KASAN_SHADOW_SCALE_SHIFT)
|
||||
KBUILD_AFLAGS += -DKASAN_SHADOW_SCALE_SHIFT=$(KASAN_SHADOW_SCALE_SHIFT)
|
||||
|
||||
core-y += arch/arm64/
|
||||
libs-y := arch/arm64/lib/ $(libs-y)
|
||||
libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a
|
||||
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
|
@ -0,0 +1,2 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
obj-y += kernel/ mm/ boot/dts/
|
|
@ -30,9 +30,6 @@ ifeq ($(CROSS_COMPILE),)
|
|||
CROSS_COMPILE := $(call cc-cross-prefix, h8300-unknown-linux- h8300-linux-)
|
||||
endif
|
||||
|
||||
core-y += arch/$(ARCH)/kernel/ arch/$(ARCH)/mm/
|
||||
core-y += arch/$(ARCH)/boot/dts/
|
||||
|
||||
libs-y += arch/$(ARCH)/lib/
|
||||
|
||||
boot := arch/h8300/boot
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
obj-y += kernel/ mm/ lib/
|
|
@ -34,7 +34,3 @@ KBUILD_CFLAGS += -ffixed-$(TIR_NAME) -DTHREADINFO_REG=$(TIR_NAME) -D__linux__
|
|||
KBUILD_AFLAGS += -DTHREADINFO_REG=$(TIR_NAME)
|
||||
|
||||
head-y := arch/hexagon/kernel/head.o
|
||||
|
||||
core-y += arch/hexagon/kernel/ \
|
||||
arch/hexagon/mm/ \
|
||||
arch/hexagon/lib/
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
|
@ -97,7 +97,6 @@ head-$(CONFIG_SUN3) := arch/m68k/kernel/sun3-head.o
|
|||
head-$(CONFIG_M68000) := arch/m68k/68000/head.o
|
||||
head-$(CONFIG_COLDFIRE) := arch/m68k/coldfire/head.o
|
||||
|
||||
core-y += arch/m68k/
|
||||
libs-y += arch/m68k/lib/
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
|
@ -332,9 +332,6 @@ head-y := arch/mips/kernel/head.o
|
|||
libs-y += arch/mips/lib/
|
||||
libs-$(CONFIG_MIPS_FP_SUPPORT) += arch/mips/math-emu/
|
||||
|
||||
# See arch/mips/Kbuild for content of core part of the kernel
|
||||
core-y += arch/mips/
|
||||
|
||||
drivers-y += arch/mips/crypto/
|
||||
|
||||
# suspend and hibernation support
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
|
@ -0,0 +1,2 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
/Image
|
|
@ -0,0 +1 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
|
@ -42,7 +42,6 @@ endif
|
|||
|
||||
head-y := arch/openrisc/kernel/head.o
|
||||
|
||||
core-y += arch/openrisc/
|
||||
libs-y += $(LIBGCC)
|
||||
|
||||
PHONY += vmlinux.bin
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
|
@ -10,25 +10,15 @@ syshdr := $(srctree)/scripts/syscallhdr.sh
|
|||
systbl := $(srctree)/scripts/syscalltbl.sh
|
||||
|
||||
quiet_cmd_syshdr = SYSHDR $@
|
||||
cmd_syshdr = $(CONFIG_SHELL) $(syshdr) --emit-nr --abis $(abis) $< $@
|
||||
cmd_syshdr = $(CONFIG_SHELL) $(syshdr) --emit-nr --abis common,$* $< $@
|
||||
|
||||
quiet_cmd_systbl = SYSTBL $@
|
||||
cmd_systbl = $(CONFIG_SHELL) $(systbl) --abis $(abis) $< $@
|
||||
cmd_systbl = $(CONFIG_SHELL) $(systbl) --abis common,$* $< $@
|
||||
|
||||
$(uapi)/unistd_32.h: abis := common,32
|
||||
$(uapi)/unistd_32.h: $(syscall) $(syshdr) FORCE
|
||||
$(uapi)/unistd_%.h: $(syscall) $(syshdr) FORCE
|
||||
$(call if_changed,syshdr)
|
||||
|
||||
$(uapi)/unistd_64.h: abis := common,64
|
||||
$(uapi)/unistd_64.h: $(syscall) $(syshdr) FORCE
|
||||
$(call if_changed,syshdr)
|
||||
|
||||
$(kapi)/syscall_table_32.h: abis := common,32
|
||||
$(kapi)/syscall_table_32.h: $(syscall) $(systbl) FORCE
|
||||
$(call if_changed,systbl)
|
||||
|
||||
$(kapi)/syscall_table_64.h: abis := common,64
|
||||
$(kapi)/syscall_table_64.h: $(syscall) $(systbl) FORCE
|
||||
$(kapi)/syscall_table_%.h: $(syscall) $(systbl) FORCE
|
||||
$(call if_changed,systbl)
|
||||
|
||||
uapisyshdr-y += unistd_32.h unistd_64.h
|
||||
|
|
|
@ -267,9 +267,6 @@ head-$(CONFIG_PPC_FPU) += arch/powerpc/kernel/fpu.o
|
|||
head-$(CONFIG_ALTIVEC) += arch/powerpc/kernel/vector.o
|
||||
head-$(CONFIG_PPC_OF_BOOT_TRAMPOLINE) += arch/powerpc/kernel/prom_init.o
|
||||
|
||||
# See arch/powerpc/Kbuild for content of core part of the kernel
|
||||
core-y += arch/powerpc/
|
||||
|
||||
# Default to zImage, override when needed
|
||||
all: zImage
|
||||
|
||||
|
|
|
@ -99,7 +99,6 @@ endif
|
|||
|
||||
head-y := arch/riscv/kernel/head.o
|
||||
|
||||
core-y += arch/riscv/
|
||||
core-$(CONFIG_RISCV_ERRATA_ALTERNATIVE) += arch/riscv/errata/
|
||||
|
||||
libs-y += arch/riscv/lib/
|
||||
|
|
|
@ -129,9 +129,6 @@ OBJCOPYFLAGS := -O binary
|
|||
|
||||
head-y := arch/s390/kernel/head64.o
|
||||
|
||||
# See arch/s390/Kbuild for content of core part of the kernel
|
||||
core-y += arch/s390/
|
||||
|
||||
libs-y += arch/s390/lib/
|
||||
drivers-y += drivers/s390/
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
obj-y += kernel/ mm/ boards/
|
||||
obj-$(CONFIG_SH_FPU_EMU) += math-emu/
|
||||
obj-$(CONFIG_USE_BUILTIN_DTB) += boot/dts/
|
|
@ -116,11 +116,6 @@ export ld-bfd
|
|||
|
||||
head-y := arch/sh/kernel/head_32.o
|
||||
|
||||
core-y += arch/sh/kernel/ arch/sh/mm/ arch/sh/boards/
|
||||
core-$(CONFIG_SH_FPU_EMU) += arch/sh/math-emu/
|
||||
|
||||
core-$(CONFIG_USE_BUILTIN_DTB) += arch/sh/boot/dts/
|
||||
|
||||
# Mach groups
|
||||
machdir-$(CONFIG_SOLUTION_ENGINE) += mach-se
|
||||
machdir-$(CONFIG_SH_HP6XX) += mach-hp6xx
|
||||
|
|
|
@ -58,9 +58,6 @@ endif
|
|||
|
||||
head-y := arch/sparc/kernel/head_$(BITS).o
|
||||
|
||||
# See arch/sparc/Kbuild for the core part of the kernel
|
||||
core-y += arch/sparc/
|
||||
|
||||
libs-y += arch/sparc/prom/
|
||||
libs-y += arch/sparc/lib/
|
||||
|
||||
|
|
|
@ -10,25 +10,15 @@ syshdr := $(srctree)/scripts/syscallhdr.sh
|
|||
systbl := $(srctree)/scripts/syscalltbl.sh
|
||||
|
||||
quiet_cmd_syshdr = SYSHDR $@
|
||||
cmd_syshdr = $(CONFIG_SHELL) $(syshdr) --emit-nr --abis $(abis) $< $@
|
||||
cmd_syshdr = $(CONFIG_SHELL) $(syshdr) --emit-nr --abis common,$* $< $@
|
||||
|
||||
quiet_cmd_systbl = SYSTBL $@
|
||||
cmd_systbl = $(CONFIG_SHELL) $(systbl) --abis $(abis) $< $@
|
||||
cmd_systbl = $(CONFIG_SHELL) $(systbl) --abis common,$* $< $@
|
||||
|
||||
$(uapi)/unistd_32.h: abis := common,32
|
||||
$(uapi)/unistd_32.h: $(syscall) $(syshdr) FORCE
|
||||
$(uapi)/unistd_%.h: $(syscall) $(syshdr) FORCE
|
||||
$(call if_changed,syshdr)
|
||||
|
||||
$(uapi)/unistd_64.h: abis := common,64
|
||||
$(uapi)/unistd_64.h: $(syscall) $(syshdr) FORCE
|
||||
$(call if_changed,syshdr)
|
||||
|
||||
$(kapi)/syscall_table_32.h: abis := common,32
|
||||
$(kapi)/syscall_table_32.h: $(syscall) $(systbl) FORCE
|
||||
$(call if_changed,systbl)
|
||||
|
||||
$(kapi)/syscall_table_64.h: abis := common,64
|
||||
$(kapi)/syscall_table_64.h: $(syscall) $(systbl) FORCE
|
||||
$(kapi)/syscall_table_%.h: $(syscall) $(systbl) FORCE
|
||||
$(call if_changed,systbl)
|
||||
|
||||
uapisyshdr-y += unistd_32.h unistd_64.h
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
|
@ -240,9 +240,6 @@ head-y += arch/x86/kernel/platform-quirks.o
|
|||
|
||||
libs-y += arch/x86/lib/
|
||||
|
||||
# See arch/x86/Kbuild for content of core part of the kernel
|
||||
core-y += arch/x86/
|
||||
|
||||
# drivers-y are linked after core-y
|
||||
drivers-$(CONFIG_MATH_EMULATION) += arch/x86/math-emu/
|
||||
drivers-$(CONFIG_PCI) += arch/x86/pci/
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
|
@ -51,7 +51,8 @@
|
|||
|
||||
/*
|
||||
* IS_MODULE(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'm', 0
|
||||
* otherwise.
|
||||
* otherwise. CONFIG_FOO=m results in "#define CONFIG_FOO_MODULE 1" in
|
||||
* autoconf.h.
|
||||
*/
|
||||
#define IS_MODULE(option) __is_defined(option##_MODULE)
|
||||
|
||||
|
@ -66,7 +67,8 @@
|
|||
|
||||
/*
|
||||
* IS_ENABLED(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y' or 'm',
|
||||
* 0 otherwise.
|
||||
* 0 otherwise. Note that CONFIG_FOO=y results in "#define CONFIG_FOO 1" in
|
||||
* autoconf.h, while CONFIG_FOO=m results in "#define CONFIG_FOO_MODULE 1".
|
||||
*/
|
||||
#define IS_ENABLED(option) __or(IS_BUILTIN(option), IS_MODULE(option))
|
||||
|
||||
|
|
|
@ -27,11 +27,11 @@ $(obj)/version.o: include/generated/compile.h
|
|||
# mkcompile_h will make sure to only update the
|
||||
# actual file if its content has changed.
|
||||
|
||||
chk_compile.h = :
|
||||
quiet_chk_compile.h = echo ' CHK $@'
|
||||
silent_chk_compile.h = :
|
||||
include/generated/compile.h: FORCE
|
||||
@$($(quiet)chk_compile.h)
|
||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkcompile_h $@ \
|
||||
quiet_cmd_compile.h = CHK $@
|
||||
cmd_compile.h = \
|
||||
$(CONFIG_SHELL) $(srctree)/scripts/mkcompile_h $@ \
|
||||
"$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" \
|
||||
"$(CONFIG_PREEMPT_RT)" $(CONFIG_CC_VERSION_TEXT) "$(LD)"
|
||||
|
||||
include/generated/compile.h: FORCE
|
||||
$(call cmd,compile.h)
|
||||
|
|
|
@ -56,9 +56,7 @@ if [ -f kernel/kheaders.md5 ] &&
|
|||
exit
|
||||
fi
|
||||
|
||||
if [ "${quiet}" != "silent_" ]; then
|
||||
echo " GEN $tarfile"
|
||||
fi
|
||||
echo " GEN $tarfile"
|
||||
|
||||
rm -rf $cpio_dir
|
||||
mkdir $cpio_dir
|
||||
|
|
|
@ -414,8 +414,8 @@ config SECTION_MISMATCH_WARN_ONLY
|
|||
|
||||
If unsure, say Y.
|
||||
|
||||
config DEBUG_FORCE_FUNCTION_ALIGN_32B
|
||||
bool "Force all function address 32B aligned" if EXPERT
|
||||
config DEBUG_FORCE_FUNCTION_ALIGN_64B
|
||||
bool "Force all function address 64B aligned" if EXPERT
|
||||
help
|
||||
There are cases that a commit from one domain changes the function
|
||||
address alignment of other domains, and cause magic performance
|
||||
|
|
|
@ -90,8 +90,13 @@ clean := -f $(srctree)/scripts/Makefile.clean obj
|
|||
echo-cmd = $(if $($(quiet)cmd_$(1)),\
|
||||
echo ' $(call escsq,$($(quiet)cmd_$(1)))$(echo-why)';)
|
||||
|
||||
# sink stdout for 'make -s'
|
||||
redirect :=
|
||||
quiet_redirect :=
|
||||
silent_redirect := exec >/dev/null;
|
||||
|
||||
# printing commands
|
||||
cmd = @set -e; $(echo-cmd) $(cmd_$(1))
|
||||
cmd = @set -e; $(echo-cmd) $($(quiet)redirect) $(cmd_$(1))
|
||||
|
||||
###
|
||||
# if_changed - execute command if any prerequisite is newer than
|
||||
|
|
|
@ -219,7 +219,6 @@ endif # CONFIG_FTRACE_MCOUNT_USE_RECORDMCOUNT
|
|||
|
||||
ifdef CONFIG_STACK_VALIDATION
|
||||
ifndef CONFIG_LTO_CLANG
|
||||
ifneq ($(SKIP_STACK_VALIDATION),1)
|
||||
|
||||
__objtool_obj := $(objtree)/tools/objtool/objtool
|
||||
|
||||
|
@ -233,7 +232,6 @@ objtool_obj = $(if $(patsubst y%,, \
|
|||
$(OBJECT_FILES_NON_STANDARD_$(basetarget).o)$(OBJECT_FILES_NON_STANDARD)n), \
|
||||
$(__objtool_obj))
|
||||
|
||||
endif # SKIP_STACK_VALIDATION
|
||||
endif # CONFIG_LTO_CLANG
|
||||
endif # CONFIG_STACK_VALIDATION
|
||||
|
||||
|
|
|
@ -39,12 +39,10 @@ prelink-ext := .lto
|
|||
# so let's now process the prelinked binary before we link the module.
|
||||
|
||||
ifdef CONFIG_STACK_VALIDATION
|
||||
ifneq ($(SKIP_STACK_VALIDATION),1)
|
||||
cmd_ld_ko_o += \
|
||||
$(objtree)/tools/objtool/objtool $(objtool_args) \
|
||||
$(@:.ko=$(prelink-ext).o);
|
||||
|
||||
endif # SKIP_STACK_VALIDATION
|
||||
endif # CONFIG_STACK_VALIDATION
|
||||
|
||||
endif # CONFIG_LTO_CLANG
|
||||
|
|
|
@ -678,7 +678,7 @@ static void check_conf(struct menu *menu)
|
|||
check_conf(child);
|
||||
}
|
||||
|
||||
static struct option long_opts[] = {
|
||||
static const struct option long_opts[] = {
|
||||
{"help", no_argument, NULL, 'h'},
|
||||
{"silent", no_argument, NULL, 's'},
|
||||
{"oldaskconfig", no_argument, &input_mode_opt, oldaskconfig},
|
||||
|
|
|
@ -38,9 +38,7 @@ LDFLAGS_vmlinux="$3"
|
|||
# Will be supressed by "make -s"
|
||||
info()
|
||||
{
|
||||
if [ "${quiet}" != "silent_" ]; then
|
||||
printf " %-7s %s\n" "${1}" "${2}"
|
||||
fi
|
||||
printf " %-7s %s\n" "${1}" "${2}"
|
||||
}
|
||||
|
||||
# Generate a linker script to ensure correct ordering of initcalls.
|
||||
|
|
|
@ -9,8 +9,6 @@ PREEMPT_RT=$5
|
|||
CC_VERSION="$6"
|
||||
LD=$7
|
||||
|
||||
vecho() { [ "${quiet}" = "silent_" ] || echo "$@" ; }
|
||||
|
||||
# Do not expand names
|
||||
set -f
|
||||
|
||||
|
@ -70,19 +68,27 @@ UTS_VERSION="$(echo $UTS_VERSION $CONFIG_FLAGS $TIMESTAMP | cut -b -$UTS_LEN)"
|
|||
# Only replace the real compile.h if the new one is different,
|
||||
# in order to preserve the timestamp and avoid unnecessary
|
||||
# recompilations.
|
||||
# We don't consider the file changed if only the date/time changed.
|
||||
# We don't consider the file changed if only the date/time changed,
|
||||
# unless KBUILD_BUILD_TIMESTAMP was explicitly set (e.g. for
|
||||
# reproducible builds with that value referring to a commit timestamp).
|
||||
# A kernel config change will increase the generation number, thus
|
||||
# causing compile.h to be updated (including date/time) due to the
|
||||
# changed comment in the
|
||||
# first line.
|
||||
|
||||
if [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then
|
||||
IGNORE_PATTERN="UTS_VERSION"
|
||||
else
|
||||
IGNORE_PATTERN="NOT_A_PATTERN_TO_BE_MATCHED"
|
||||
fi
|
||||
|
||||
if [ -r $TARGET ] && \
|
||||
grep -v 'UTS_VERSION' $TARGET > .tmpver.1 && \
|
||||
grep -v 'UTS_VERSION' .tmpcompile > .tmpver.2 && \
|
||||
grep -v $IGNORE_PATTERN $TARGET > .tmpver.1 && \
|
||||
grep -v $IGNORE_PATTERN .tmpcompile > .tmpver.2 && \
|
||||
cmp -s .tmpver.1 .tmpver.2; then
|
||||
rm -f .tmpcompile
|
||||
else
|
||||
vecho " UPD $TARGET"
|
||||
echo " UPD $TARGET"
|
||||
mv -f .tmpcompile $TARGET
|
||||
fi
|
||||
rm -f .tmpver.1 .tmpver.2
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Generates a small Makefile used in the root of the output
|
||||
# directory, to allow make to be started from there.
|
||||
# The Makefile also allow for more convinient build of external modules
|
||||
|
||||
# Usage
|
||||
# $1 - Kernel src directory
|
||||
|
||||
if [ "${quiet}" != "silent_" ]; then
|
||||
echo " GEN Makefile"
|
||||
fi
|
||||
|
||||
cat << EOF > Makefile
|
||||
# Automatically generated by $0: don't edit
|
||||
include $1/Makefile
|
||||
EOF
|
|
@ -660,8 +660,11 @@ static void handle_modversion(const struct module *mod,
|
|||
unsigned int crc;
|
||||
|
||||
if (sym->st_shndx == SHN_UNDEF) {
|
||||
warn("EXPORT symbol \"%s\" [%s%s] version generation failed, symbol will not be versioned.\n",
|
||||
symname, mod->name, mod->is_vmlinux ? "" : ".ko");
|
||||
warn("EXPORT symbol \"%s\" [%s%s] version ...\n"
|
||||
"Is \"%s\" prototyped in <asm/asm-prototypes.h>?\n",
|
||||
symname, mod->name, mod->is_vmlinux ? "" : ".ko",
|
||||
symname);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -59,32 +59,19 @@ scm_version()
|
|||
fi
|
||||
# If we are past a tagged commit (like
|
||||
# "v2.6.30-rc5-302-g72357d5"), we pretty print it.
|
||||
#
|
||||
# Ensure the abbreviated sha1 has exactly 12
|
||||
# hex characters, to make the output
|
||||
# independent of git version, local
|
||||
# core.abbrev settings and/or total number of
|
||||
# objects in the current repository - passing
|
||||
# --abbrev=12 ensures a minimum of 12, and the
|
||||
# awk substr() then picks the 'g' and first 12
|
||||
# hex chars.
|
||||
if atag="$(git describe --abbrev=12 2>/dev/null)"; then
|
||||
echo "$atag" | awk -F- '{printf("-%05d-%s", $(NF-1),substr($(NF),0,13))}'
|
||||
|
||||
# If we don't have a tag at all we print -g{commitish},
|
||||
# again using exactly 12 hex chars.
|
||||
else
|
||||
head="$(echo $head | cut -c1-12)"
|
||||
printf '%s%s' -g $head
|
||||
if atag="$(git describe 2>/dev/null)"; then
|
||||
echo "$atag" | awk -F- '{printf("-%05d", $(NF-1))}'
|
||||
fi
|
||||
fi
|
||||
|
||||
# Is this git on svn?
|
||||
if git config --get svn-remote.svn.url >/dev/null; then
|
||||
printf -- '-svn%s' "$(git svn find-rev $head)"
|
||||
# Add -g and exactly 12 hex chars.
|
||||
printf '%s%s' -g "$(echo $head | cut -c1-12)"
|
||||
fi
|
||||
|
||||
# Check for uncommitted changes.
|
||||
# This script must avoid any write attempt to the source tree,
|
||||
# which might be read-only.
|
||||
# You cannot use 'git describe --dirty' because it tries to
|
||||
# create .git/index.lock .
|
||||
# First, with git-status, but --no-optional-locks is only
|
||||
# supported in git >= 2.14, so fall back to git-diff-index if
|
||||
# it fails. Note that git-diff-index does not refresh the
|
||||
|
@ -93,45 +80,9 @@ scm_version()
|
|||
if {
|
||||
git --no-optional-locks status -uno --porcelain 2>/dev/null ||
|
||||
git diff-index --name-only HEAD
|
||||
} | grep -qvE '^(.. )?scripts/package'; then
|
||||
} | read dummy; then
|
||||
printf '%s' -dirty
|
||||
fi
|
||||
|
||||
# All done with git
|
||||
return
|
||||
fi
|
||||
|
||||
# Check for mercurial and a mercurial repo.
|
||||
if test -d .hg && hgid=$(hg id 2>/dev/null); then
|
||||
# Do we have an tagged version? If so, latesttagdistance == 1
|
||||
if [ "$(hg log -r . --template '{latesttagdistance}')" = "1" ]; then
|
||||
id=$(hg log -r . --template '{latesttag}')
|
||||
printf '%s%s' -hg "$id"
|
||||
else
|
||||
tag=$(printf '%s' "$hgid" | cut -d' ' -f2)
|
||||
if [ -z "$tag" -o "$tag" = tip ]; then
|
||||
id=$(printf '%s' "$hgid" | sed 's/[+ ].*//')
|
||||
printf '%s%s' -hg "$id"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Are there uncommitted changes?
|
||||
# These are represented by + after the changeset id.
|
||||
case "$hgid" in
|
||||
*+|*+\ *) printf '%s' -dirty ;;
|
||||
esac
|
||||
|
||||
# All done with mercurial
|
||||
return
|
||||
fi
|
||||
|
||||
# Check for svn and a svn repo.
|
||||
if rev=$(LC_ALL=C svn info 2>/dev/null | grep '^Last Changed Rev'); then
|
||||
rev=$(echo $rev | awk '{print $NF}')
|
||||
printf -- '-svn%s' "$rev"
|
||||
|
||||
# All done with svn
|
||||
return
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -180,15 +131,13 @@ res="${res}${CONFIG_LOCALVERSION}${LOCALVERSION}"
|
|||
if test "$CONFIG_LOCALVERSION_AUTO" = "y"; then
|
||||
# full scm version string
|
||||
res="$res$(scm_version)"
|
||||
else
|
||||
elif [ -z "${LOCALVERSION}" ]; then
|
||||
# append a plus sign if the repository is not in a clean
|
||||
# annotated or signed tagged state (as git describe only
|
||||
# looks at signed or annotated tags - git tag -a/-s) and
|
||||
# LOCALVERSION= is not specified
|
||||
if test "${LOCALVERSION+set}" != "set"; then
|
||||
scm=$(scm_version --short)
|
||||
res="$res${scm:++}"
|
||||
fi
|
||||
scm=$(scm_version --short)
|
||||
res="$res${scm:++}"
|
||||
fi
|
||||
|
||||
echo "$res"
|
||||
|
|
|
@ -69,7 +69,7 @@ guard=_UAPI_ASM_$(basename "$outfile" |
|
|||
sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
|
||||
-e 's/[^A-Z0-9_]/_/g' -e 's/__/_/g')
|
||||
|
||||
grep -E "^[0-9A-Fa-fXx]+[[:space:]]+$abis" "$infile" | sort -n | {
|
||||
grep -E "^[0-9A-Fa-fXx]+[[:space:]]+$abis" "$infile" | {
|
||||
echo "#ifndef $guard"
|
||||
echo "#define $guard"
|
||||
echo
|
||||
|
|
|
@ -0,0 +1,74 @@
|
|||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Generate a syscall number header.
|
||||
#
|
||||
# Each line of the syscall table should have the following format:
|
||||
#
|
||||
# NR ABI NAME [NATIVE] [COMPAT]
|
||||
#
|
||||
# NR syscall number
|
||||
# ABI ABI name
|
||||
# NAME syscall name
|
||||
# NATIVE native entry point (optional)
|
||||
# COMPAT compat entry point (optional)
|
||||
set -e
|
||||
|
||||
usage() {
|
||||
echo >&2 "usage: $0 [--abis ABIS] [--prefix PREFIX] INFILE OUTFILE" >&2
|
||||
echo >&2
|
||||
echo >&2 " INFILE input syscall table"
|
||||
echo >&2 " OUTFILE output header file"
|
||||
echo >&2
|
||||
echo >&2 "options:"
|
||||
echo >&2 " --abis ABIS ABI(s) to handle (By default, all lines are handled)"
|
||||
echo >&2 " --prefix PREFIX The prefix to the macro like __NR_<PREFIX><NAME>"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# default unless specified by options
|
||||
abis=
|
||||
prefix=
|
||||
|
||||
while [ $# -gt 0 ]
|
||||
do
|
||||
case $1 in
|
||||
--abis)
|
||||
abis=$(echo "($2)" | tr ',' '|')
|
||||
shift 2;;
|
||||
--prefix)
|
||||
prefix=$2
|
||||
shift 2;;
|
||||
-*)
|
||||
echo "$1: unknown option" >&2
|
||||
usage;;
|
||||
*)
|
||||
break;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ $# -ne 2 ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
infile="$1"
|
||||
outfile="$2"
|
||||
|
||||
guard=_ASM_$(basename "$outfile" |
|
||||
sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
|
||||
-e 's/[^A-Z0-9_]/_/g' -e 's/__/_/g')
|
||||
|
||||
grep -E "^[0-9A-Fa-fXx]+[[:space:]]+$abis" "$infile" | sort -n | {
|
||||
echo "#ifndef $guard"
|
||||
echo "#define $guard"
|
||||
echo
|
||||
|
||||
max=0
|
||||
while read nr abi name native compat ; do
|
||||
max=$nr
|
||||
done
|
||||
|
||||
echo "#define __NR_${prefix}syscalls $(($max + 1))"
|
||||
echo
|
||||
echo "#endif /* $guard */"
|
||||
} > "$outfile"
|
|
@ -52,10 +52,15 @@ outfile="$2"
|
|||
|
||||
nxt=0
|
||||
|
||||
grep -E "^[0-9]+[[:space:]]+$abis" "$infile" | sort -n | {
|
||||
grep -E "^[0-9]+[[:space:]]+$abis" "$infile" | {
|
||||
|
||||
while read nr abi name native compat ; do
|
||||
|
||||
if [ $nxt -gt $nr ]; then
|
||||
echo "error: $infile: syscall table is not sorted or duplicates the same syscall number" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
while [ $nxt -lt $nr ]; do
|
||||
echo "__SYSCALL($nxt, sys_ni_syscall)"
|
||||
nxt=$((nxt + 1))
|
||||
|
|
Загрузка…
Ссылка в новой задаче