From cc863b02496de2d1bd3b3cb24e141d6892d56a05 Mon Sep 17 00:00:00 2001 From: simonmar Date: Mon, 12 Nov 2001 14:13:35 +0000 Subject: [PATCH] [project @ 2001-11-12 14:13:35 by simonmar] Generate .a files into a temporary file before renaming to the actual target, to avoid a problem whereby 'ar' could leave a partially-built archive lying around. --- mk/target.mk | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/mk/target.mk b/mk/target.mk index 0ad9587..dc6add1 100644 --- a/mk/target.mk +++ b/mk/target.mk @@ -437,20 +437,25 @@ ifneq "$(way)" "u" SRC_HC_OPTS += -split-objs +# We generate the archive into a temporary file libfoo.a.tmp, then +# rename it at the end. This avoids the problem that ar may sometimes +# fail, leaving a partially built archive behind. ifeq "$(ArSupportsInput)" "" define BUILD_LIB -$(RM) $@ -(echo $(STUBOBJS); $(FIND) $(patsubst %.$(way_)o,%,$(LIBOBJS)) -name '*.$(way_)o') | xargs ar q $@ -$(RANLIB) $@ +$(RM) $@ $@.tmp +(echo $(STUBOBJS); $(FIND) $(patsubst %.$(way_)o,%,$(LIBOBJS)) -name '*.$(way_)o') | xargs ar q $@.tmp +$(RANLIB) $@.tmp +$(MV) $@.tmp $@ endef else define BUILD_LIB -$(RM) $@ +$(RM) $@ $@.tmp echo $(STUBOBJS) > $@.list $(FIND) $(patsubst %.$(way_)o,%,$(LIBOBJS)) -name '*.$(way_)o' >> $@.list -$(AR) $(AR_OPTS) $@ $(ArSupportsInput) $@.list +$(AR) $(AR_OPTS) $@.tmp $(ArSupportsInput) $@.list $(RM) $@.list -$(RANLIB) $@ +$(RANLIB) $@.tmp +$(MV) $@.tmp $@ endef endif -- 1.7.10.4