Commit 6750691a authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'kbuild-fixes-v5.14' of...

Merge tag 'kbuild-fixes-v5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild

Pull Kbuild fixes from Masahiro Yamada:

 - Restore the original behavior of scripts/setlocalversion when
   LOCALVERSION is set to empty.

 - Show Kconfig prompts even for 'make -s'

 - Fix the combination of COFNIG_LTO_CLANG=y and CONFIG_MODVERSIONS=y
   for older GNU Make versions

* tag 'kbuild-fixes-v5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
  Documentation: Fix intiramfs script name
  Kbuild: lto: fix module versionings mismatch in GNU make 3.X
  kbuild: do not suppress Kconfig prompts for silent build
  scripts/setlocalversion: fix a bug when LOCALVERSION is empty
parents 1d67c8d9 5e60f363
...@@ -69,17 +69,17 @@ early userspace image can be built by an unprivileged user. ...@@ -69,17 +69,17 @@ early userspace image can be built by an unprivileged user.
As a technical note, when directories and files are specified, the As a technical note, when directories and files are specified, the
entire CONFIG_INITRAMFS_SOURCE is passed to entire CONFIG_INITRAMFS_SOURCE is passed to
usr/gen_initramfs_list.sh. This means that CONFIG_INITRAMFS_SOURCE usr/gen_initramfs.sh. This means that CONFIG_INITRAMFS_SOURCE
can really be interpreted as any legal argument to can really be interpreted as any legal argument to
gen_initramfs_list.sh. If a directory is specified as an argument then gen_initramfs.sh. If a directory is specified as an argument then
the contents are scanned, uid/gid translation is performed, and the contents are scanned, uid/gid translation is performed, and
usr/gen_init_cpio file directives are output. If a directory is usr/gen_init_cpio file directives are output. If a directory is
specified as an argument to usr/gen_initramfs_list.sh then the specified as an argument to usr/gen_initramfs.sh then the
contents of the file are simply copied to the output. All of the output contents of the file are simply copied to the output. All of the output
directives from directory scanning and file contents copying are directives from directory scanning and file contents copying are
processed by usr/gen_init_cpio. processed by usr/gen_init_cpio.
See also 'usr/gen_initramfs_list.sh -h'. See also 'usr/gen_initramfs.sh -h'.
Where's this all leading? Where's this all leading?
========================= =========================
......
...@@ -170,7 +170,7 @@ Documentation/driver-api/early-userspace/early_userspace_support.rst for more de ...@@ -170,7 +170,7 @@ Documentation/driver-api/early-userspace/early_userspace_support.rst for more de
The kernel does not depend on external cpio tools. If you specify a The kernel does not depend on external cpio tools. If you specify a
directory instead of a configuration file, the kernel's build infrastructure directory instead of a configuration file, the kernel's build infrastructure
creates a configuration file from that directory (usr/Makefile calls creates a configuration file from that directory (usr/Makefile calls
usr/gen_initramfs_list.sh), and proceeds to package up that directory usr/gen_initramfs.sh), and proceeds to package up that directory
using the config file (by feeding it to usr/gen_init_cpio, which is created using the config file (by feeding it to usr/gen_init_cpio, which is created
from usr/gen_init_cpio.c). The kernel's build-time cpio creation code is from usr/gen_init_cpio.c). The kernel's build-time cpio creation code is
entirely self-contained, and the kernel's boot-time extractor is also entirely self-contained, and the kernel's boot-time extractor is also
......
...@@ -728,11 +728,12 @@ $(KCONFIG_CONFIG): ...@@ -728,11 +728,12 @@ $(KCONFIG_CONFIG):
# This exploits the 'multi-target pattern rule' trick. # This exploits the 'multi-target pattern rule' trick.
# The syncconfig should be executed only once to make all the targets. # The syncconfig should be executed only once to make all the targets.
# (Note: use the grouped target '&:' when we bump to GNU Make 4.3) # (Note: use the grouped target '&:' when we bump to GNU Make 4.3)
quiet_cmd_syncconfig = SYNC $@ #
cmd_syncconfig = $(MAKE) -f $(srctree)/Makefile syncconfig # Do not use $(call cmd,...) here. That would suppress prompts from syncconfig,
# so you cannot notice that Kconfig is waiting for the user input.
%/config/auto.conf %/config/auto.conf.cmd %/generated/autoconf.h: $(KCONFIG_CONFIG) %/config/auto.conf %/config/auto.conf.cmd %/generated/autoconf.h: $(KCONFIG_CONFIG)
+$(call cmd,syncconfig) $(Q)$(kecho) " SYNC $@"
$(Q)$(MAKE) -f $(srctree)/Makefile syncconfig
else # !may-sync-config else # !may-sync-config
# External modules and some install targets need include/generated/autoconf.h # External modules and some install targets need include/generated/autoconf.h
# and include/config/auto.conf but do not care if they are up-to-date. # and include/config/auto.conf but do not care if they are up-to-date.
......
...@@ -386,7 +386,7 @@ ifeq ($(CONFIG_LTO_CLANG) $(CONFIG_MODVERSIONS),y y) ...@@ -386,7 +386,7 @@ ifeq ($(CONFIG_LTO_CLANG) $(CONFIG_MODVERSIONS),y y)
cmd_update_lto_symversions = \ cmd_update_lto_symversions = \
rm -f $@.symversions \ rm -f $@.symversions \
$(foreach n, $(filter-out FORCE,$^), \ $(foreach n, $(filter-out FORCE,$^), \
$(if $(wildcard $(n).symversions), \ $(if $(shell test -s $(n).symversions && echo y), \
; cat $(n).symversions >> $@.symversions)) ; cat $(n).symversions >> $@.symversions))
else else
cmd_update_lto_symversions = echo >/dev/null cmd_update_lto_symversions = echo >/dev/null
......
...@@ -131,11 +131,14 @@ res="${res}${CONFIG_LOCALVERSION}${LOCALVERSION}" ...@@ -131,11 +131,14 @@ res="${res}${CONFIG_LOCALVERSION}${LOCALVERSION}"
if test "$CONFIG_LOCALVERSION_AUTO" = "y"; then if test "$CONFIG_LOCALVERSION_AUTO" = "y"; then
# full scm version string # full scm version string
res="$res$(scm_version)" res="$res$(scm_version)"
elif [ -z "${LOCALVERSION}" ]; then elif [ "${LOCALVERSION+set}" != "set" ]; then
# append a plus sign if the repository is not in a clean # If the variable LOCALVERSION is not set, append a plus
# annotated or signed tagged state (as git describe only # sign if the repository is not in a clean annotated or
# looks at signed or annotated tags - git tag -a/-s) and # signed tagged state (as git describe only looks at signed
# LOCALVERSION= is not specified # or annotated tags - git tag -a/-s).
#
# If the variable LOCALVERSION is set (including being set
# to an empty string), we don't want to append a plus sign.
scm=$(scm_version --short) scm=$(scm_version --short)
res="$res${scm:++}" res="$res${scm:++}"
fi fi
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment