include/config/auto.conf not sync up with .config

From: Qian Cai
Date: Sun Dec 16 2018 - 22:56:48 EST


This bug can be reproduced this way on x86_64.

* make sure none of libelf-dev, libelf-devel or elfutils-libelf-devel installed.

# make distclean

* generate a default .config where CONFIG_UNWINDER_ORC is enabled by default.
# make menuconfig (exit -> save)

# grep CONFIG_UNWINDER_ORC .config
CONFIG_UNWINDER_ORC=y

# make menuconfig (unselect CONFIG_UNWINDER_ORC)

# grep CONFIG_UNWINDER_ORC .config
# CONFIG_UNWINDER_ORC is not set

# make
Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y, please install
libelf-dev, libelf-devel or elfutils-libelf-devel

# grep CONFIG_UNWINDER_ORC include/config/auto.conf
CONFIG_UNWINDER_ORC=y

This is due to this receipe in Makefile had never been executed even though
.config has is more recent than auto.conf.

# The actual configuration files used during the build are
# stored in include/generated/ and include/config/. Update
# them if .config is newer than include/config/auto.conf
#(which mirrors .config).
include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd
$(Q)$(MAKE) -f $(srctree)/Makefile syncconfig

Actually, replaced that rule with any rule would never executed the recipe
there, For example,

/tmp/noexist:
$(warning "never print anything")