build: Use flock to serialize ar steps as workaround

Use flock to serialize ar steps to avoid parallel build break
sometimes.
This commit is contained in:
Xiang Xiao 2020-02-19 17:08:28 +08:00 committed by Gregory Nutt
parent f28eca9dbc
commit 6707bfae86
4 changed files with 11 additions and 5 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
.arlock
.depend
Make.dep
*.o

View File

@ -130,9 +130,9 @@ $(CXXOBJS): %$(SUFFIX)$(OBJEXT): %$(CXXEXT)
.built: $(OBJS)
ifeq ($(WINTOOL),y)
$(call ARCHIVE, "${shell cygpath -w $(BIN)}", $(OBJS))
$(call ARLOCK, "${shell cygpath -w $(BIN)}", $(OBJS))
else
$(call ARCHIVE, $(BIN), $(OBJS))
$(call ARLOCK, $(BIN), $(OBJS))
endif
$(Q) touch $@

View File

@ -99,6 +99,10 @@ define REGISTER
endef
endif
define ARLOCK
$(Q) flock .arlock $(call ARCHIVE, $1, $(2))
endef
# Tools
ifeq ($(DIRLINK),)

View File

@ -117,9 +117,9 @@ $(SYMTABOBJ): %$(OBJEXT): %.c
$(BIN): $(SYMTABOBJ)
ifeq ($(WINTOOL),y)
$(call ARCHIVE, "${shell cygpath -w $(BIN)}", $^)
$(call ARLOCK, "${shell cygpath -w $(BIN)}", $^)
else
$(call ARCHIVE, $(BIN), $^)
$(call ARLOCK, $(BIN), $^)
endif
endif # !CONFIG_BUILD_LOADABLE
@ -198,6 +198,7 @@ else
fi; \
)
endif
$(call DELFILE, .arlock)
$(call DELFILE, .depend)
$(call DELFILE, $(SYMTABSRC))
$(call DELFILE, $(SYMTABOBJ))