Implemented support for parallel build

This commit is contained in:
KirisameMashiro 2025-01-24 11:08:48 +08:00
parent 6f474ea500
commit e82955c7d4
3 changed files with 13 additions and 21 deletions

View File

@ -85,6 +85,7 @@ endif
endif
.NOTPARALLEL: all
all: $(PART)

View File

@ -32,16 +32,17 @@ CXXFLAGS += $(DEFINES)
BUILD_DIR := $(KERNEL_ROOT)/build
APP_DIR := Ubiquitous/XiZi_IIoT
OBJS_LIST_FILE := $(BUILD_DIR)/make.obj
.PHONY:COMPILER
COMPILER:
@if [ "${SRC_DIR_TEMP}" != "" ]; then \
for dir in $(SRC_DIR_TEMP); do \
$(MAKE) -C $$dir; \
done; \
fi
@/bin/echo -n $(OBJS) " " >> $(KERNEL_ROOT)/build/make.obj
@flock -x $(OBJS_LIST_FILE) -c "echo -n '$(OBJS) ' >> $(OBJS_LIST_FILE)"
################################################
define add_c_file
@ -52,9 +53,7 @@ $(eval OBJS += $(LOCALC)) \
$(if $(strip $(LOCALC)),$(eval $(LOCALC): $(1)
@if [ ! -d $$(@D) ]; then mkdir -p $$(@D); fi
@echo cc $$<
@echo -n $(dir $(LOCALC)) >>$(KERNEL_ROOT)/build/make.dep
@($(CROSS_COMPILE)gcc -MM $$(CFLAGS) -c $$<) >>$(KERNEL_ROOT)/build/make.dep
@$(CROSS_COMPILE)gcc $$(CFLAGS) -c $$< -o $$@))
@$(CROSS_COMPILE)gcc $$(CFLAGS) -MMD -c $$< -o $$@))
endef
define add_cpp_file
@ -65,9 +64,7 @@ $(eval OBJS += $(LOCALCPP)) \
$(if $(strip $(LOCALCPP)),$(eval $(LOCALCPP): $(1)
@if [ ! -d $$(@D) ]; then mkdir -p $$(@D); fi
@echo cpp $$<
@/bin/echo -n $(dir $(LOCALCPP)) >>$(KERNEL_ROOT)/build/make.dep
@$(CROSS_COMPILE)g++ -MM $$(CXXFLAGS) -c $$< >>$(KERNEL_ROOT)/build/make.dep
@$(CROSS_COMPILE)g++ $$(CXXFLAGS) -c $$< -o $$@))
@$(CROSS_COMPILE)g++ $$(CXXFLAGS) -MMD -c $$< -o $$@))
endef
define add_cc_file
@ -77,10 +74,8 @@ $(eval LOCALCPP := $(addprefix $(BUILD_DIR)/,$(COBJ))) \
$(eval OBJS += $(LOCALCPP)) \
$(if $(strip $(LOCALCPP)),$(eval $(LOCALCPP): $(1)
@if [ ! -d $$(@D) ]; then mkdir -p $$(@D); fi
@echo cc $$<
@/bin/echo -n $(dir $(LOCALCPP)) >>$(KERNEL_ROOT)/build/make.dep
@$(CROSS_COMPILE)g++ -MM $$(CXXFLAGS) -c $$< >>$(KERNEL_ROOT)/build/make.dep
@$(CROSS_COMPILE)g++ $$(CXXFLAGS) -c $$< -o $$@))
@echo cpp $$<
@$(CROSS_COMPILE)g++ $$(CXXFLAGS) -MMD -c $$< -o $$@))
endef
define add_S_file
@ -91,9 +86,7 @@ $(eval OBJS += $(LOCALS)) \
$(if $(strip $(LOCALS)),$(eval $(LOCALS): $(1)
@if [ ! -d $$(@D) ]; then mkdir -p $$(@D); fi
@echo asm $$<
@/bin/echo -n $(dir $(LOCALC)) >>$(KERNEL_ROOT)/build/make.dep
@$(CROSS_COMPILE)gcc -MM $$(CFLAGS) -c $$< >>$(KERNEL_ROOT)/build/make.dep
@$(CROSS_COMPILE)gcc $$(AFLAGS) -c $$< -o $$@))
@$(CROSS_COMPILE)gcc $$(AFLAGS) -MMD -c $$< -o $$@))
endef
define add_a_file
@ -124,8 +117,6 @@ $(if $(SRCS),$(foreach f,$(SRCS),$(call add_S_file,$(addprefix $(CUR_DIR)/,$(f))
SRCS := $(strip $(filter %.a,$(SRC_FILES)))
$(if $(SRCS),$(foreach f,$(SRCS),$(call add_a_file,$(addprefix $(CUR_DIR)/,$(f)))))
COMPILER:$(OBJS)
COMPILER: $(OBJS)
-include $(KERNEL_ROOT)/build/make.dep
-include $(OBJS:%.o=%.d)

View File

@ -1,6 +1,6 @@
OBJS := $(shell cat make.obj)
$(TARGET): $(OBJS)
$(TARGET): $(OBJS)
@echo ------------------------------------------------
@echo link $(TARGET)
@$(CROSS_COMPILE)g++ -o $@ $($(LINK_FLAGS)) $(OBJS) $(LINK_LWIP) $(LINK_MUSLLIB) $(LINK_MONGOOSE) $(LINK_WCH_NET) $(LIBCC) $(LINK_WCH_BLE)