Hello Linus, Please pull Kbuild updates for v6.1-rc1. I attached my resolutions of the merge conflicts. (attachment: merge-resolution.diff) You can find a similar resolution in next-20221005. A slight difference is that, I inserted obj-$(CONFIG_RUST) += rust/ right after obj-$(CONFIG_IO_URING) += io_uring/ This is the right order to keep the current link order. Thank you. The following changes since commit f76349cf41451c5c42a99f18a9163377e4b364ff: Linux 6.0-rc7 (2022-09-25 14:01:02 -0700) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git tags/kbuild-v6.1 for you to fetch changes up to 0715fdb03e2c4f5748d245a231e422602ed29f33: docs: bump minimal GNU Make version to 3.82 (2022-10-06 09:16:21 +0900) ---------------------------------------------------------------- Kbuild updates for v6.1 - Remove potentially incomplete targets when Kbuid is interrupted by SIGINT etc. in case GNU Make may miss to do that when stderr is piped to another program. - Rewrite the single target build so it works more correctly. - Fix rpm-pkg builds with V=1. - List top-level subdirectories in ./Kbuild. - Ignore auto-generated __kstrtab_* and __kstrtabns_* symbols in kallsyms. - Avoid two different modules in lib/zstd/ having shared code, which potentially causes building the common code as build-in and modular back-and-forth. - Unify two modpost invocations to optimize the build process. - Remove head-y syntax in favor of linker scripts for placing particular sections in the head of vmlinux. - Bump the minimal GNU Make version to 3.82. - Clean up misc Makefiles and scripts. ---------------------------------------------------------------- Alexey Kardashevskiy (1): zstd: Fixing mixed module-builtin objects Janis Schoetterl-Glausch (1): kbuild: rpm-pkg: fix breakage when V=1 is used Masahiro Yamada (35): kbuild: remove the target in signal traps when interrupted kbuild: add phony targets to ./Kbuild kbuild: hard-code KBUILD_ALLDIRS in scripts/Makefile.package kbuild: check sha1sum just once for each atomic header kbuild: do not deduplicate modules.order nios2: move core-y in arch/nios2/Makefile to arch/nios2/Kbuild kbuild: remove duplicated dependency between modules and modules_check kbuild: refactor single builds of *.ko kbuild: move 'PHONY += modules_prepare' to the common part init/version.c: remove #include <linux/version.h> kbuild: build init/built-in.a just once kbuild: generate include/generated/compile.h in top Makefile scripts/mkcompile_h: move LC_ALL=C to '$LD -v' Revert "kbuild: Make scripts/compile.h when sh != bash" kbuild: fix and refactor single target build kbuild: use objtool-args-y to clean up objtool arguments linux/export: use inline assembler to populate symbol CRCs kbuild: list sub-directories in ./Kbuild kbuild: move .vmlinux.objs rule to Makefile.modpost kbuild: move vmlinux.o rule to the top Makefile kbuild: unify two modpost invocations kbuild: re-run modpost when it is updated kbuild: hide error checker logs for V=1 builds kbuild: use obj-y instead extra-y for objects placed at the head kbuild: remove head-y syntax mksysmap: update comment about __crc_* kbuild: reuse mksysmap output for kallsyms kallsyms: drop duplicated ignore patterns from kallsyms.c kallsyms: take the input file instead of reading stdin kallsyms: ignore __kstrtab_* and __kstrtabns_* symbols kbuild: move modules.builtin(.modinfo) rules to Makefile.vmlinux_o kbuild: rebuild .vmlinux.export.o when its prerequisite is updated Revert "kbuild: Check if linker supports the -X option" ia64: simplify esi object addition in Makefile docs: bump minimal GNU Make version to 3.82 Nick Desaulniers (1): Makefile.compiler: replace cc-ifversion with compiler-specific macros Owen Rafferty (1): kbuild: rewrite check-local-export in sh/awk Zeng Heng (2): Kconfig: remove sym_set_choice_value scripts: remove unused argument 'type' Documentation/kbuild/makefiles.rst | 56 ++++++++++++----------------- Documentation/process/changes.rst | 4 +-- Kbuild | 77 ++++++++++++++++++++++++++++++---------- Makefile | 182 ++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------- arch/alpha/Makefile | 2 -- arch/alpha/kernel/Makefile | 4 +-- arch/arc/Makefile | 2 -- arch/arc/kernel/Makefile | 4 +-- arch/arm/Makefile | 3 -- arch/arm/kernel/Makefile | 4 +-- arch/arm64/Makefile | 3 -- arch/arm64/kernel/Makefile | 4 +-- arch/csky/Makefile | 2 -- arch/csky/kernel/Makefile | 4 +-- arch/hexagon/Makefile | 2 -- arch/hexagon/kernel/Makefile | 3 +- arch/ia64/Makefile | 1 - arch/ia64/kernel/Makefile | 9 ++--- arch/loongarch/Makefile | 2 -- arch/loongarch/kernel/Makefile | 4 +-- arch/m68k/68000/Makefile | 2 +- arch/m68k/Makefile | 9 ----- arch/m68k/coldfire/Makefile | 2 +- arch/m68k/kernel/Makefile | 23 ++++++------ arch/microblaze/Makefile | 1 - arch/microblaze/kernel/Makefile | 4 +-- arch/mips/Makefile | 2 -- arch/mips/kernel/Makefile | 4 +-- arch/nios2/Kbuild | 2 ++ arch/nios2/Makefile | 5 --- arch/nios2/kernel/Makefile | 2 +- arch/openrisc/Makefile | 2 -- arch/openrisc/kernel/Makefile | 4 +-- arch/parisc/Makefile | 2 -- arch/parisc/kernel/Makefile | 4 +-- arch/powerpc/Makefile | 12 ------- arch/powerpc/boot/wrapper | 2 +- arch/powerpc/kernel/Makefile | 20 +++++------ arch/riscv/Makefile | 2 -- arch/riscv/kernel/Makefile | 2 +- arch/s390/Makefile | 2 -- arch/s390/boot/version.c | 1 + arch/s390/kernel/Makefile | 4 +-- arch/sh/Makefile | 2 -- arch/sh/kernel/Makefile | 4 +-- arch/sparc/Makefile | 2 -- arch/sparc/kernel/Makefile | 3 +- arch/x86/Makefile | 5 --- arch/x86/boot/compressed/kaslr.c | 1 + arch/x86/boot/version.c | 1 + arch/x86/kernel/Makefile | 10 +++--- arch/xtensa/Makefile | 2 -- arch/xtensa/kernel/Makefile | 4 +-- drivers/gpu/drm/amd/display/dc/dml/Makefile | 2 +- include/linux/export-internal.h | 6 ++-- init/.gitignore | 2 ++ init/Makefile | 57 +++++++++++++++++++++--------- init/build-version | 10 ++++++ init/version-timestamp.c | 31 ++++++++++++++++ init/version.c | 37 +++++++------------ kernel/gen_kheaders.sh | 6 ++-- lib/Kconfig | 8 +++-- lib/zstd/Makefile | 16 ++++----- lib/zstd/common/entropy_common.c | 5 ++- lib/zstd/common/zstd_common.c | 10 ++++++ scripts/Kbuild.include | 23 +++++++++++- scripts/Makefile.build | 56 +++++++++-------------------- scripts/Makefile.compiler | 10 ++++-- scripts/Makefile.extrawarn | 4 +-- scripts/Makefile.lib | 33 +++++++++-------- scripts/Makefile.modfinal | 2 +- scripts/Makefile.modpost | 114 +++++++++++++++++++++++++++-------------------------------- scripts/Makefile.package | 5 ++- scripts/Makefile.vmlinux | 21 ++++++++++- scripts/Makefile.vmlinux_o | 47 +++++++++++++++++-------- scripts/asn1_compiler.c | 6 ++-- scripts/atomic/check-atomics.sh | 33 ----------------- scripts/check-local-export | 97 +++++++++++++++++++++++++------------------------- scripts/clang-tools/gen_compile_commands.py | 19 +--------- scripts/head-object-list.txt | 53 ++++++++++++++++++++++++++++ scripts/kallsyms.c | 54 +++++++++++++++++----------- scripts/kconfig/conf.c | 2 +- scripts/kconfig/lkc.h | 5 --- scripts/link-vmlinux.sh | 72 +++++++------------------------------ scripts/mkcompile_h | 96 ++++++-------------------------------------------- scripts/mksysmap | 24 ++++++++++--- scripts/package/mkspec | 4 +-- 87 files changed, 727 insertions(+), 762 deletions(-) create mode 100644 init/.gitignore create mode 100755 init/build-version create mode 100644 init/version-timestamp.c delete mode 100755 scripts/atomic/check-atomics.sh create mode 100644 scripts/head-object-list.txt
commit e3e42c96fa1e8f504ab499fcdc8e410878b983b6 Merge: 833477fce7a1 0715fdb03e2c Author: Masahiro Yamada <masahiroy@xxxxxxxxxx> Date: Thu Oct 6 11:03:56 2022 +0900 Merge branch 'kbuild' of ../../workspace/linux-kbuild into merge-test diff --cc Documentation/process/changes.rst index 9a90197989dd,26a7fd875cfa..9844ca3a71a6 --- a/Documentation/process/changes.rst +++ b/Documentation/process/changes.rst @@@ -31,9 -31,7 +31,9 @@@ you probably needn't concern yourself w ====================== =============== ======================================== GNU C 5.1 gcc --version Clang/LLVM (optional) 11.0.0 clang --version +Rust (optional) 1.62.0 rustc --version +bindgen (optional) 0.56.0 bindgen --version - GNU make 3.81 make --version + GNU make 3.82 make --version bash 4.2 bash --version binutils 2.23 ld -v flex 2.5.35 flex --version diff --cc Kbuild index fa441b98c9f6,8a37584d1fd6..464b34a08f51 --- a/Kbuild +++ b/Kbuild @@@ -42,18 -39,60 +39,61 @@@ $(offsets-file): arch/$(SRCARCH)/kernel quiet_cmd_syscalls = CALL $< cmd_syscalls = $(CONFIG_SHELL) $< $(CC) $(c_flags) $(missing_syscalls_flags) - missing-syscalls: scripts/checksyscalls.sh $(offsets-file) FORCE + PHONY += missing-syscalls + missing-syscalls: scripts/checksyscalls.sh $(offsets-file) $(call cmd,syscalls) - ##### - # Check atomic headers are up-to-date - - always-y += old-atomics - - quiet_cmd_atomics = CALL $< - cmd_atomics = $(CONFIG_SHELL) $< - - old-atomics: scripts/atomic/check-atomics.sh FORCE - $(call cmd,atomics) + # Check the manual modification of atomic headers + + quiet_cmd_check_sha1 = CHKSHA1 $< + cmd_check_sha1 = \ + if ! command -v sha1sum >/dev/null; then \ + echo "warning: cannot check the header due to sha1sum missing"; \ + exit 0; \ + fi; \ + if [ "$$(sed -n '$$s:// ::p' $<)" != \ + "$$(sed '$$d' $< | sha1sum | sed 's/ .*//')" ]; then \ + echo "error: $< has been modified." >&2; \ + exit 1; \ + fi; \ + touch $@ + + atomic-checks += $(addprefix $(obj)/.checked-, \ + atomic-arch-fallback.h \ + atomic-instrumented.h \ + atomic-long.h) + + targets += $(atomic-checks) + $(atomic-checks): $(obj)/.checked-%: include/linux/atomic/% FORCE + $(call if_changed,check_sha1) + + # A phony target that depends on all the preparation targets + + PHONY += prepare + prepare: $(offsets-file) missing-syscalls $(atomic-checks) + @: + + # Ordinary directory descending + # --------------------------------------------------------------------------- + + obj-y += init/ + obj-y += usr/ + obj-y += arch/$(SRCARCH)/ + obj-y += $(ARCH_CORE) + obj-y += kernel/ + obj-y += certs/ + obj-y += mm/ + obj-y += fs/ + obj-y += ipc/ + obj-y += security/ + obj-y += crypto/ + obj-$(CONFIG_BLOCK) += block/ + obj-$(CONFIG_IO_URING) += io_uring/ ++obj-$(CONFIG_RUST) += rust/ + obj-y += $(ARCH_LIB) + obj-y += drivers/ + obj-y += sound/ + obj-$(CONFIG_SAMPLES) += samples/ + obj-$(CONFIG_NET) += net/ + obj-y += virt/ + obj-y += $(ARCH_DRIVERS) diff --cc Makefile index f659d3085121,d7ba05191470..d66187d53b5f --- a/Makefile +++ b/Makefile @@@ -536,9 -501,8 +536,9 @@@ RUSTFLAGS_MODULE AFLAGS_MODULE = LDFLAGS_MODULE = CFLAGS_KERNEL = +RUSTFLAGS_KERNEL = AFLAGS_KERNEL = - LDFLAGS_vmlinux = + export LDFLAGS_vmlinux = # Use USERINCLUDE when you must reference the UAPI directories only. USERINCLUDE := \ @@@ -862,11 -789,7 +861,10 @@@ KBUILD_CFLAGS += $(stackp-flags-y KBUILD_CFLAGS-$(CONFIG_WERROR) += -Werror KBUILD_CFLAGS-$(CONFIG_CC_NO_ARRAY_BOUNDS) += -Wno-array-bounds - KBUILD_CFLAGS += $(KBUILD_CFLAGS-y) $(CONFIG_CC_IMPLICIT_FALLTHROUGH) +KBUILD_RUSTFLAGS-$(CONFIG_WERROR) += -Dwarnings +KBUILD_RUSTFLAGS += $(KBUILD_RUSTFLAGS-y) + ifdef CONFIG_CC_IS_CLANG KBUILD_CPPFLAGS += -Qunused-arguments # The kernel builds with '-std=gnu11' so use of GNU extensions is acceptable. @@@ -1574,7 -1493,7 +1567,8 @@@ endif # CONFIG_MODULE # Directories & files removed with 'make clean' CLEAN_FILES += include/ksym vmlinux.symvers modules-only.symvers \ modules.builtin modules.builtin.modinfo modules.nsdeps \ - compile_commands.json .thinlto-cache rust/test rust/doc - compile_commands.json .thinlto-cache .vmlinux.objs .vmlinux.export.c ++ compile_commands.json .thinlto-cache rust/test rust/doc \ ++ .vmlinux.objs .vmlinux.export.c # Directories & files removed with 'make mrproper' MRPROPER_FILES += include/config include/generated \