diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 38 |
1 files changed, 32 insertions, 6 deletions
@@ -2,20 +2,36 @@ CXX := g++ CXXFLAGS := -Wall -Wextra -std=c++11 -g -O2 LDFLAGS := -TARGET := ai OBJDIR := .objs -CXX_SOURCES := $(wildcard *.cpp) -OBJ_FILES := $(patsubst %.cpp,$(OBJDIR)/%.o,$(CXX_SOURCES)) -DEP_FILES := $(patsubst %.cpp,$(OBJDIR)/%.d,$(CXX_SOURCES)) +ifneq ($(value AI),) + AI_UPPER := $(shell echo '$(value AI)' | tr a-z A-Z) + AI_LOWER := $(shell echo '$(value AI)' | tr A-Z a-z) +else + AI_UPPER := MC + AI_LOWER := mc +endif +CXXFLAGS += -DAI=$(AI_UPPER) -.PHONY: all clean +MAIN_OBJ := $(OBJDIR)/main_$(AI_LOWER).o +CXX_SOURCES := $(filter-out main.cpp ai_%.cpp,$(wildcard *.cpp)) ai_$(AI_LOWER).cpp +OBJ_FILES := $(patsubst %.cpp,$(OBJDIR)/%.o,$(CXX_SOURCES)) $(MAIN_OBJ) +DEP_FILES := $(patsubst %.cpp,$(OBJDIR)/%.d,$(CXX_SOURCES)) $(MAIN_OBJ:.o=.d) + +TARGET := ai$(AI_LOWER) + +AI_ALL_LOWER := $(patsubst ai_%.cpp,%,$(wildcard ai_*.cpp)) + +TARGET_ALL := $(patsubst %,ai%,$(AI_ALL_LOWER)) + + +.PHONY: all clean debug all: $(TARGET) clean: - rm -f $(TARGET) + rm -f $(TARGET_ALL) rm -rf $(OBJDIR) $(TARGET): $(OBJ_FILES) termio/libtermio.a @@ -32,6 +48,16 @@ $(OBJDIR)/%.d: %.cpp termio/libtermio.a @echo DEP $< @$(CXX) -MT $(OBJDIR)/$*.o -MM $(CXXFLAGS) $< >$@ +$(OBJDIR)/main_$(AI_LOWER).o: main.cpp termio/libtermio.a + @mkdir -p $(dir $@) + @echo CXX "$< -o $(notdir $@)" + @$(CXX) $(CXXFLAGS) -c -o $@ $< + +$(OBJDIR)/main_$(AI_LOWER).d: main.cpp termio/libtermio.a + @mkdir -p $(dir $@) + @echo DEP "$< -o $(notdir $@)" + @$(CXX) -MT $(OBJDIR)/$*.o -MM $(CXXFLAGS) $< >$@ + termio/.git: git submodule update --init |