summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortomsmeding <tom.smeding@gmail.com>2019-02-16 22:01:45 +0100
committertomsmeding <tom.smeding@gmail.com>2019-02-16 22:01:45 +0100
commit233cbed8c9e1d08cc4abac060452b2cf643b4c7f (patch)
treee3411015a7ccc0e7b6f078b23c2ea221088d4d32
parent1d87c5bd9001483edf1863b7f243e6b894478a09 (diff)
Compile all AI's in makefile
-rw-r--r--.gitignore1
-rw-r--r--Makefile48
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)