# Makefile for big_example # include platform specific file to get CC and LD initialized correctly include $(GOROOT)/src/Make.$(GOARCH) MODULES=msg server client BUILD_DIR=build include $(patsubst %,%/module.mk,$(MODULES)) OBJ_SERVER:=$(patsubst %.go, $(BUILD_DIR)/server/%.$(O), $(filter %.go,$(SRC_SERVER))) OBJ_CLIENT=$(patsubst %.go, $(BUILD_DIR)/client/%.$(O), $(filter %.go,$(SRC_CLIENT))) OBJ_MSG=$(patsubst %.go, $(BUILD_DIR)/msg/%.$(O), $(filter %.go,$(SRC_MSG))) BIN_SERVER=$(BUILD_DIR)/chat_server BIN_CLIENT=$(BUILD_DIR)/chat_client all: init $(MAKE) $(BIN_SERVER) $(BIN_CLIENT) init: if [ ! -d $(BUILD_DIR) ] ; then mkdir $(BUILD_DIR) ; fi for dir in $(MODULES); do (cd $(BUILD_DIR); if [ ! -d $$dir ] ; then mkdir $$dir; fi) ; done $(BIN_SERVER): init $(MAKE) $(OBJ_MSG) $(MAKE) $(OBJ_SERVER) $(LD) -o $@ $(OBJ_MSG) $(OBJ_SERVER) $(BIN_CLIENT): init $(MAKE) $(OBJ_MSG) $(MAKE) $(OBJ_CLIENT) $(LD) -o $@ $(OBJ_MSG) $(OBJ_CLIENT) $(BUILD_DIR)/%.$(O): %.go $(GC) -o $@ $< .PHONY: init clean clean: @-rm -r $(BUILD_DIR)