Avoid calling ARCHIVE in multiple places

Because it isn't safe to run multiple instances to libapps.a
concurrently.
This commit is contained in:
YAMAMOTO Takashi 2020-02-21 14:08:51 +09:00 committed by patacongo
parent 698f0edbaa
commit 52222cb020
3 changed files with 26 additions and 8 deletions

View File

@ -129,12 +129,6 @@ $(CXXOBJS): %$(SUFFIX)$(OBJEXT): %$(CXXEXT)
$(call ELFCOMPILEXX, $<, $@), $(call COMPILEXX, $<, $@))
.built: $(OBJS)
ifeq ($(WINTOOL),y)
$(call ARCHIVE, "${shell cygpath -w $(BIN)}", $(OBJS))
else
$(call ARCHIVE, $(BIN), $(OBJS))
endif
$(Q) touch $@
ifeq ($(BUILD_MODULE),y)
@ -163,6 +157,9 @@ endif
install:: $(PROGLIST)
show-objs:
@echo ""
else
MAINNAME := $(addsuffix _main,$(PROGNAME))
@ -185,6 +182,9 @@ endif
install::
show-objs:
@echo $(addprefix $(CWD)$(DELIM),$(OBJS))
endif # BUILD_MODULE
preconfig::

View File

@ -54,6 +54,7 @@ $(foreach SDIR, $(SUBDIRS), $(eval $(call SDIR_template,$(SDIR),context)))
$(foreach SDIR, $(SUBDIRS), $(eval $(call SDIR_template,$(SDIR),depend)))
$(foreach SDIR, $(SUBDIRS), $(eval $(call SDIR_template,$(SDIR),clean)))
$(foreach SDIR, $(SUBDIRS), $(eval $(call SDIR_template,$(SDIR),distclean)))
$(foreach SDIR, $(SUBDIRS), $(eval $(call SDIR_template,$(SDIR),show-objs)))
nothing:
@ -75,4 +76,6 @@ ifneq ($(MENUDESC),)
$(call DELFILE, Kconfig)
endif
show-objs: $(foreach SDIR, $(SUBDIRS), $(SDIR)_show-objs)
-include Make.dep

View File

@ -55,6 +55,8 @@ endif
SYMTABSRC = symtab_apps.c
SYMTABOBJ = $(SYMTABSRC:.c=$(OBJEXT))
APPOBJS = $(shell $(MAKE) show-objs TOPDIR="$(TOPDIR)" APPDIR="$(APPDIR)")
# Build targets
all: $(BIN)
@ -66,6 +68,11 @@ define MAKE_template
endef
define MAKE_template_quiet
@ $(MAKE) -C $(1) $(2) TOPDIR="$(TOPDIR)" APPDIR="$(APPDIR)" V=0 Q=@
endef
define SDIR_template
$(1)_$(2):
+$(Q) $(MAKE) -C $(1) $(2) TOPDIR="$(TOPDIR)" APPDIR="$(APPDIR)"
@ -105,6 +112,11 @@ else
ifeq ($(CONFIG_BUILD_LOADABLE),)
$(BIN): $(foreach SDIR, $(CONFIGURED_APPS), $(SDIR)_all)
ifeq ($(WINTOOL),y)
$(call ARCHIVE, "${shell cygpath -w $(BIN)}", $(APPOBJS))
else
$(call ARCHIVE, $(BIN), $(APPOBJS))
endif
else
@ -117,9 +129,9 @@ $(SYMTABOBJ): %$(OBJEXT): %.c
$(BIN): $(SYMTABOBJ)
ifeq ($(WINTOOL),y)
$(call ARCHIVE, "${shell cygpath -w $(BIN)}", $^)
$(call ARCHIVE, "${shell cygpath -w $(BIN)}", $(APPOBJS) $(SYMTABOBJ))
else
$(call ARCHIVE, $(BIN), $^)
$(call ARCHIVE, $(BIN), $(APPOBJS) $(SYMTABOBJ))
endif
endif # !CONFIG_BUILD_LOADABLE
@ -155,6 +167,9 @@ Kconfig:
preconfig: Kconfig
show-objs:
$(foreach SDIR, $(CONFIGURED_APPS), $(call MAKE_template_quiet,$(SDIR),show-objs))
export:
ifneq ($(EXPORTDIR),)
ifneq ($(BUILTIN_REGISTRY),)