summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortomsmeding <tom.smeding@gmail.com>2019-02-17 11:31:55 +0100
committertomsmeding <tom.smeding@gmail.com>2019-02-17 11:31:55 +0100
commit2c5ec9426c0f55cf67a12b589a974ff64de061e4 (patch)
tree446faa5bb52cba454bc38f8e275dcdf150dd5e57
parent9d0f4baa7d82d896b9660dfb2fe484129d5cfd13 (diff)
More accurate dependency tracking in makefile
-rw-r--r--Makefile21
-rw-r--r--main.cpp4
2 files changed, 15 insertions, 10 deletions
diff --git a/Makefile b/Makefile
index da2a06b..3103efc 100644
--- a/Makefile
+++ b/Makefile
@@ -11,10 +11,17 @@ AI_ALL_LOWER := $(patsubst ai_%.cpp,%,$(AI_SOURCES))
MAIN_DEP_FILES := $(patsubst %,$(OBJDIR)/main_%.d,$(AI_ALL_LOWER))
-CXX_SOURCES := $(filter-out main.cpp,$(wildcard *.cpp))
+AI_CXX_SOURCES := $(wildcard ai_*.cpp)
+AI_OBJ_FILES := $(patsubst %.cpp,$(OBJDIR)/%.o,$(AI_CXX_SOURCES))
+AI_DEP_FILES := $(patsubst %.cpp,$(OBJDIR)/%.d,$(AI_CXX_SOURCES))
+
+CXX_SOURCES := $(filter-out main.cpp $(AI_CXX_SOURCES),$(wildcard *.cpp))
OBJ_FILES := $(patsubst %.cpp,$(OBJDIR)/%.o,$(CXX_SOURCES))
DEP_FILES := $(patsubst %.cpp,$(OBJDIR)/%.d,$(CXX_SOURCES))
+ALL_OBJ_FILES := $(OBJ_FILES) $(AI_OBJ_FILES)
+ALL_DEP_FILES := $(DEP_FILES) $(AI_DEP_FILES)
+
TARGETS := $(patsubst %,ai%,$(AI_ALL_LOWER))
@@ -26,16 +33,16 @@ clean:
rm -f $(TARGETS)
rm -rf $(OBJDIR)
-$(TARGETS): ai%: $(OBJ_FILES) $(OBJDIR)/main_%.o $(TERMIO_LIB)
+$(TARGETS): ai%: $(OBJ_FILES) $(OBJDIR)/main_%.o $(OBJDIR)/ai_%.o $(TERMIO_LIB)
@echo LD $@
@$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)
-$(OBJ_FILES): $(OBJDIR)/%.o: %.cpp $(TERMIO_LIB)
+$(ALL_OBJ_FILES): $(OBJDIR)/%.o: %.cpp $(TERMIO_LIB)
@mkdir -p $(dir $@)
@echo CXX $<
@$(CXX) $(CXXFLAGS) -c -o $@ $<
-$(DEP_FILES): $(OBJDIR)/%.d: %.cpp $(TERMIO_LIB)
+$(ALL_DEP_FILES): $(OBJDIR)/%.d: %.cpp $(TERMIO_LIB)
@mkdir -p $(dir $@)
@echo DEP $<
@$(CXX) -MT $(OBJDIR)/$*.o -MM $(CXXFLAGS) $< >$@
@@ -43,12 +50,12 @@ $(DEP_FILES): $(OBJDIR)/%.d: %.cpp $(TERMIO_LIB)
$(OBJDIR)/main_%.o: main.cpp $(TERMIO_LIB)
@mkdir -p $(dir $@)
@echo CXX "$< -o $(notdir $@)"
- @$(CXX) $(CXXFLAGS) -DAI=$(shell echo "$*" | tr a-z A-Z) -c -o $@ $<
+ @$(CXX) $(CXXFLAGS) -DAI=$(shell echo "$*" | tr a-z A-Z) -DAI_HEADER=\"ai_$*.h\" -c -o $@ $<
$(OBJDIR)/main_%.d: main.cpp $(TERMIO_LIB)
@mkdir -p $(dir $@)
@echo DEP "$< -o $(notdir $@)"
- @$(CXX) -MT $(OBJDIR)/$*.o -MM $(CXXFLAGS) -DAI=$(shell echo "$*" | tr a-z A-Z) $< >$@
+ @$(CXX) -MT $(OBJDIR)/$*.o -MM $(CXXFLAGS) -DAI=$(shell echo "$*" | tr a-z A-Z) -DAI_HEADER=\"ai_$*.h\" $< >$@
termio/.git:
git submodule update --init
@@ -56,4 +63,4 @@ termio/.git:
$(TERMIO_LIB): termio/.git $(wildcard termio/*.c termio/*.h)
make -C termio
--include $(DEP_FILES) $(MAIN_DEP_FILES)
+-include $(ALL_DEP_FILES) $(MAIN_DEP_FILES)
diff --git a/main.cpp b/main.cpp
index 57d3bb5..1cb6f62 100644
--- a/main.cpp
+++ b/main.cpp
@@ -5,9 +5,7 @@
#include <unistd.h>
#include <sys/time.h>
#include "board.h"
-#include "ai_mc.h"
-#include "ai_mm.h"
-#include "ai_rand.h"
+#include AI_HEADER
#include "ui.h"
using namespace std;