build system: fix for coarse mtime problem
authorDenys Vlasenko <vda.linux@googlemail.com>
Thu, 26 Nov 2009 04:25:24 +0000 (05:25 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Thu, 26 Nov 2009 04:25:24 +0000 (05:25 +0100)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
scripts/kconfig/Makefile

index f56863f7ca45cdb52f8a5f6daa0de33c119b945b..b5708e2e4bd86f23665e2501557985cc475e2cc3 100644 (file)
@@ -17,11 +17,28 @@ menuconfig: $(obj)/mconf
 config: $(obj)/conf
        $< Config.in
 
+# Mtime granularity problem.
+# It was observed that these commands:
+# make allnoconfig; sed -i -e '/CONFIG_TRUE/s/.*/CONFIG_TRUE=y/' .config; make
+# sometimes produce busybox with "true" applet still disabled.
+# This is caused by .config updated by sed having mtime which is still
+# equal to (not bigger than) include/autoconf.h's mtime,
+# and thus 2nd make does not regenerate include/autoconf.h.
+# Waiting for 1 second after non-interactive "make XXXXconfig"
+# prevents this from happening.
+#
+# We'd like to detect whether filesystem we are on has coarse mtimes,
+# but can't do it yet, bbox ls hasn't got --full-time.
+#MTIME_IS_COARSE:=@ls --full-time -ld | grep -F .000 >/dev/null
+MTIME_IS_COARSE:=@true
+
 oldconfig: $(obj)/conf
        $< -o Config.in
+       $(MTIME_IS_COARSE) && sleep 1
 
 silentoldconfig: $(obj)/conf
        $< -s Config.in
+       $(MTIME_IS_COARSE) && sleep 1
 
 update-po-config: $(obj)/kxgettext
        xgettext --default-domain=linux \
@@ -46,15 +63,19 @@ PHONY += randconfig allyesconfig allnoconfig allmodconfig defconfig
 
 randconfig: $(obj)/conf
        $< -r Config.in
+       $(MTIME_IS_COARSE) && sleep 1
 
 allyesconfig: $(obj)/conf
        $< -y Config.in
+       $(MTIME_IS_COARSE) && sleep 1
 
 allnoconfig: $(obj)/conf
        $< -n Config.in
+       $(MTIME_IS_COARSE) && sleep 1
 
 allmodconfig: $(obj)/conf
        $< -m Config.in
+       $(MTIME_IS_COARSE) && sleep 1
 
 defconfig: $(obj)/conf
 ifeq ($(KBUILD_DEFCONFIG),)
@@ -63,9 +84,11 @@ else
        @echo *** Default configuration is based on '$(KBUILD_DEFCONFIG)'
        $(Q)$< -D $(KBUILD_DEFCONFIG) Config.in
 endif
+       $(MTIME_IS_COARSE) && sleep 1
 
 %_defconfig: $(obj)/conf
        $(Q)$< -D $@ Config.in
+       $(MTIME_IS_COARSE) && sleep 1
 
 # Help text used by make help
 help: