build system: fix for coarse mtime problem

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2009-11-26 05:25:24 +01:00
parent b2e5fc35eb
commit fa1e7177fb

View File

@ -17,11 +17,28 @@ menuconfig: $(obj)/mconf
config: $(obj)/conf config: $(obj)/conf
$< Config.in $< 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 oldconfig: $(obj)/conf
$< -o Config.in $< -o Config.in
$(MTIME_IS_COARSE) && sleep 1
silentoldconfig: $(obj)/conf silentoldconfig: $(obj)/conf
$< -s Config.in $< -s Config.in
$(MTIME_IS_COARSE) && sleep 1
update-po-config: $(obj)/kxgettext update-po-config: $(obj)/kxgettext
xgettext --default-domain=linux \ xgettext --default-domain=linux \
@ -46,15 +63,19 @@ PHONY += randconfig allyesconfig allnoconfig allmodconfig defconfig
randconfig: $(obj)/conf randconfig: $(obj)/conf
$< -r Config.in $< -r Config.in
$(MTIME_IS_COARSE) && sleep 1
allyesconfig: $(obj)/conf allyesconfig: $(obj)/conf
$< -y Config.in $< -y Config.in
$(MTIME_IS_COARSE) && sleep 1
allnoconfig: $(obj)/conf allnoconfig: $(obj)/conf
$< -n Config.in $< -n Config.in
$(MTIME_IS_COARSE) && sleep 1
allmodconfig: $(obj)/conf allmodconfig: $(obj)/conf
$< -m Config.in $< -m Config.in
$(MTIME_IS_COARSE) && sleep 1
defconfig: $(obj)/conf defconfig: $(obj)/conf
ifeq ($(KBUILD_DEFCONFIG),) ifeq ($(KBUILD_DEFCONFIG),)
@ -63,9 +84,11 @@ else
@echo *** Default configuration is based on '$(KBUILD_DEFCONFIG)' @echo *** Default configuration is based on '$(KBUILD_DEFCONFIG)'
$(Q)$< -D $(KBUILD_DEFCONFIG) Config.in $(Q)$< -D $(KBUILD_DEFCONFIG) Config.in
endif endif
$(MTIME_IS_COARSE) && sleep 1
%_defconfig: $(obj)/conf %_defconfig: $(obj)/conf
$(Q)$< -D $@ Config.in $(Q)$< -D $@ Config.in
$(MTIME_IS_COARSE) && sleep 1
# Help text used by make help # Help text used by make help
help: help: