DIST := dist CD := $(shell pwd) INI_WRITER := $(CD)/inirw DIST_DIR := $(CD)/$(DIST) BIN_DIR := $(DIST_DIR)/bin INI_FILE := $(DIST_DIR)/bin/manifest.ini LOCAL_DIR := $(DIST_DIR)/local ARCH_FILE := $(DIST_DIR)-$(shell date "+%Y%m%d-%H%M%S").zip SUB_DIR=$(shell ls -l |grep -v sync- | grep -E 'service|-control|-gateway'| awk '{print $$9}' ) VERSION=1.0.1 PLAT_FORM := x86_64 ifdef arch PLAT_FORM=$(arch) $(info "plat_form" $(PLAT_FORM)) endif ifeq ($(MAKECMDGOALS),base) SUB_DIR := api-gateway \ log-service \ sysinfo-service \ system-service \ version-control endif ifeq ($(MAKECMDGOALS),agx) PLAT_FORM=aarch64 endif define submake $(MAKE) -C $(subst app/,,$@) MODULE_NAME=$(subst app/,,$@) OUTPUT_DIR=$(BIN_DIR) CONFIG_DIR=$(LOCAL_DIR) INI_SCRIPT=$(INI_WRITER) MANIFEST=$(INI_FILE) PLATFORM=$(PLAT_FORM) endef .PHONY: app/% app/%: $(submake); base:$(SUB_DIR) agx:$(SUB_DIR) all:$(SUB_DIR) ARCHIVE $(SUB_DIR): ECHO $(submake) ECHO: @echo $(SUB_DIR) ARCHIVE: echo "$(VERSION)" > "$(DIST)/version.txt" zip -r -q -o "$(ARCH_FILE)" "$(DIST)/" Test: echo $(BIN_DIR) echo $(LOCAL_DIR) echo $(ARCH_FILE) clean: rm -rf $(DIST)/* .PHONY : all clean