From 233cbed8c9e1d08cc4abac060452b2cf643b4c7f Mon Sep 17 00:00:00 2001 From: tomsmeding Date: Sat, 16 Feb 2019 22:01:45 +0100 Subject: Compile all AI's in makefile --- .gitignore | 1 + Makefile | 48 ++++++++++++++++++++---------------------------- 2 files changed, 21 insertions(+), 28 deletions(-) diff --git a/.gitignore b/.gitignore index 6ab5a49..76d63a9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ aimc airand +aimm .objs/ competition/ diff --git a/Makefile b/Makefile index f0912ee..da2a06b 100644 --- a/Makefile +++ b/Makefile @@ -4,64 +4,56 @@ LDFLAGS := OBJDIR := .objs -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 +TERMIO_LIB := termio/libtermio.a -CXXFLAGS += -DAI=$(AI_UPPER) +AI_SOURCES := $(wildcard ai_*.cpp) +AI_ALL_LOWER := $(patsubst ai_%.cpp,%,$(AI_SOURCES)) -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) +MAIN_DEP_FILES := $(patsubst %,$(OBJDIR)/main_%.d,$(AI_ALL_LOWER)) -TARGET := ai$(AI_LOWER) +CXX_SOURCES := $(filter-out main.cpp,$(wildcard *.cpp)) +OBJ_FILES := $(patsubst %.cpp,$(OBJDIR)/%.o,$(CXX_SOURCES)) +DEP_FILES := $(patsubst %.cpp,$(OBJDIR)/%.d,$(CXX_SOURCES)) -AI_ALL_LOWER := $(patsubst ai_%.cpp,%,$(wildcard ai_*.cpp)) - -TARGET_ALL := $(patsubst %,ai%,$(AI_ALL_LOWER)) +TARGETS := $(patsubst %,ai%,$(AI_ALL_LOWER)) .PHONY: all clean -all: $(TARGET) +all: $(TARGETS) clean: - rm -f $(TARGET_ALL) + rm -f $(TARGETS) rm -rf $(OBJDIR) -$(TARGET): $(OBJ_FILES) termio/libtermio.a +$(TARGETS): ai%: $(OBJ_FILES) $(OBJDIR)/main_%.o $(TERMIO_LIB) @echo LD $@ - @$(CXX) $(CXXFLAGS) -o $@ $^ termio/libtermio.a $(LDFLAGS) + @$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) -$(OBJDIR)/%.o: %.cpp termio/libtermio.a +$(OBJ_FILES): $(OBJDIR)/%.o: %.cpp $(TERMIO_LIB) @mkdir -p $(dir $@) @echo CXX $< @$(CXX) $(CXXFLAGS) -c -o $@ $< -$(OBJDIR)/%.d: %.cpp termio/libtermio.a +$(DEP_FILES): $(OBJDIR)/%.d: %.cpp $(TERMIO_LIB) @mkdir -p $(dir $@) @echo DEP $< @$(CXX) -MT $(OBJDIR)/$*.o -MM $(CXXFLAGS) $< >$@ -$(OBJDIR)/main_$(AI_LOWER).o: main.cpp termio/libtermio.a +$(OBJDIR)/main_%.o: main.cpp $(TERMIO_LIB) @mkdir -p $(dir $@) @echo CXX "$< -o $(notdir $@)" - @$(CXX) $(CXXFLAGS) -c -o $@ $< + @$(CXX) $(CXXFLAGS) -DAI=$(shell echo "$*" | tr a-z A-Z) -c -o $@ $< -$(OBJDIR)/main_$(AI_LOWER).d: main.cpp termio/libtermio.a +$(OBJDIR)/main_%.d: main.cpp $(TERMIO_LIB) @mkdir -p $(dir $@) @echo DEP "$< -o $(notdir $@)" - @$(CXX) -MT $(OBJDIR)/$*.o -MM $(CXXFLAGS) $< >$@ + @$(CXX) -MT $(OBJDIR)/$*.o -MM $(CXXFLAGS) -DAI=$(shell echo "$*" | tr a-z A-Z) $< >$@ termio/.git: git submodule update --init -termio/libtermio.a: termio/.git $(wildcard termio/*.c termio/*.h) +$(TERMIO_LIB): termio/.git $(wildcard termio/*.c termio/*.h) make -C termio --include $(DEP_FILES) +-include $(DEP_FILES) $(MAIN_DEP_FILES) -- cgit v1.2.3-54-g00ecf