From e82955c7d42510b5e1cdd971c644126424b894b3 Mon Sep 17 00:00:00 2001 From: KirisameMashiro <47731209+Sssssaltyfish@users.noreply.github.com> Date: Fri, 24 Jan 2025 11:08:48 +0800 Subject: [PATCH] Implemented support for parallel build --- Ubiquitous/XiZi_IIoT/Makefile | 1 + Ubiquitous/XiZi_IIoT/compiler.mk | 31 +++++++++++-------------------- Ubiquitous/XiZi_IIoT/link.mk | 2 +- 3 files changed, 13 insertions(+), 21 deletions(-) diff --git a/Ubiquitous/XiZi_IIoT/Makefile b/Ubiquitous/XiZi_IIoT/Makefile index 08e117018..2068d2ee5 100755 --- a/Ubiquitous/XiZi_IIoT/Makefile +++ b/Ubiquitous/XiZi_IIoT/Makefile @@ -85,6 +85,7 @@ endif endif +.NOTPARALLEL: all all: $(PART) diff --git a/Ubiquitous/XiZi_IIoT/compiler.mk b/Ubiquitous/XiZi_IIoT/compiler.mk index da99cbccc..9d312dc54 100644 --- a/Ubiquitous/XiZi_IIoT/compiler.mk +++ b/Ubiquitous/XiZi_IIoT/compiler.mk @@ -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) diff --git a/Ubiquitous/XiZi_IIoT/link.mk b/Ubiquitous/XiZi_IIoT/link.mk index 7597b8a28..fa76da46c 100644 --- a/Ubiquitous/XiZi_IIoT/link.mk +++ b/Ubiquitous/XiZi_IIoT/link.mk @@ -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)