OSDN Git Service

kbuild: do not quote string values in include/config/auto.conf
authorMasahiro Yamada <masahiroy@kernel.org>
Tue, 14 Dec 2021 02:53:53 +0000 (11:53 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Sat, 8 Jan 2022 09:03:57 +0000 (18:03 +0900)
commit129ab0d2d9f38b9d43df35235fc66c6740d6928b
treeb58b9e8b648c4b7c2ea3d2eaf6118ad272b89797
parent7d153696e5db1e37387c2f7ec06ffc8d4aac70a4
kbuild: do not quote string values in include/config/auto.conf

The previous commit fixed up all shell scripts to not include
include/config/auto.conf.

Now that include/config/auto.conf is only included by Makefiles,
we can change it into a more Make-friendly form.

Previously, Kconfig output string values enclosed with double-quotes
(both in the .config and include/config/auto.conf):

    CONFIG_X="foo bar"

Unlike shell, Make handles double-quotes (and single-quotes as well)
verbatim. We must rip them off when used.

There are some patterns:

  [1] $(patsubst "%",%,$(CONFIG_X))
  [2] $(CONFIG_X:"%"=%)
  [3] $(subst ",,$(CONFIG_X))
  [4] $(shell echo $(CONFIG_X))

These are not only ugly, but also fragile.

[1] and [2] do not work if the value contains spaces, like
   CONFIG_X=" foo bar "

[3] does not work correctly if the value contains double-quotes like
   CONFIG_X="foo\"bar"

[4] seems to work better, but has a cost of forking a process.

Anyway, quoted strings were always PITA for our Makefiles.

This commit changes Kconfig to stop quoting in include/config/auto.conf.

These are the string type symbols referenced in Makefiles or scripts:

    ACPI_CUSTOM_DSDT_FILE
    ARC_BUILTIN_DTB_NAME
    ARC_TUNE_MCPU
    BUILTIN_DTB_SOURCE
    CC_IMPLICIT_FALLTHROUGH
    CC_VERSION_TEXT
    CFG80211_EXTRA_REGDB_KEYDIR
    EXTRA_FIRMWARE
    EXTRA_FIRMWARE_DIR
    EXTRA_TARGETS
    H8300_BUILTIN_DTB
    INITRAMFS_SOURCE
    LOCALVERSION
    MODULE_SIG_HASH
    MODULE_SIG_KEY
    NDS32_BUILTIN_DTB
    NIOS2_DTB_SOURCE
    OPENRISC_BUILTIN_DTB
    SOC_CANAAN_K210_DTB_SOURCE
    SYSTEM_BLACKLIST_HASH_LIST
    SYSTEM_REVOCATION_KEYS
    SYSTEM_TRUSTED_KEYS
    TARGET_CPU
    UNUSED_KSYMS_WHITELIST
    XILINX_MICROBLAZE0_FAMILY
    XILINX_MICROBLAZE0_HW_VER
    XTENSA_VARIANT_NAME

I checked them one by one, and fixed up the code where necessary.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
23 files changed:
Makefile
arch/arc/Makefile
arch/arc/boot/dts/Makefile
arch/h8300/boot/dts/Makefile
arch/microblaze/Makefile
arch/nds32/boot/dts/Makefile
arch/nios2/boot/dts/Makefile
arch/openrisc/boot/dts/Makefile
arch/powerpc/boot/Makefile
arch/riscv/boot/dts/canaan/Makefile
arch/sh/boot/dts/Makefile
arch/xtensa/Makefile
arch/xtensa/boot/dts/Makefile
certs/Makefile
drivers/acpi/Makefile
drivers/base/firmware_loader/builtin/Makefile
init/Makefile
net/wireless/Makefile
scripts/Makefile.modinst
scripts/gen_autoksyms.sh
scripts/kconfig/confdata.c
scripts/setlocalversion
usr/Makefile