# 基础配置
BUILD_ROOT := $(PWD)
BUILD_DIR  := $(BUILD_ROOT)/build
BIN_DIR    := $(BUILD_DIR)/bin
LIB_DIR    := $(BUILD_DIR)/lib

# 显式列出需要编译的子目录（按需增减）
PROCESS_DIRS := \
    libnngmsg/src \
    libloadcfg/src \
    emsd/src \
    procdata/src \
    protod/src \
    alarm/src \
	config/src \
    north/src  \
    bus_monitor  \
	device_manager/src

.PHONY: all
all: compile

# 逐个调用子目录的 Makefile
.PHONY: compile
compile: $(BIN_DIR) $(LIB_DIR)
	@for dir in $(PROCESS_DIRS); do \
		echo "==== Compiling in $$dir ===="; \
		$(MAKE) -C $$dir BUILD_ROOT=${PWD} \
			BIN_DIR="$(BIN_DIR)" \
			LIB_DIR="$(LIB_DIR)" || exit 1; \
	done

$(BIN_DIR) $(LIB_DIR):
	@mkdir -p $@

# 清理所有子目录和根目录的构建结果
.PHONY: clean
clean:
	@for dir in $(PROCESS_DIRS); do \
		echo "Cleaning $$dir"; \
		$(MAKE) -C $$dir clean || exit 1; \
	done
	@rm -rf $(BUILD_DIR)
