From 2c5ec9426c0f55cf67a12b589a974ff64de061e4 Mon Sep 17 00:00:00 2001 From: tomsmeding Date: Sun, 17 Feb 2019 11:31:55 +0100 Subject: More accurate dependency tracking in makefile --- Makefile | 21 ++++++++++++++------- main.cpp | 4 +--- 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 #include #include "board.h" -#include "ai_mc.h" -#include "ai_mm.h" -#include "ai_rand.h" +#include AI_HEADER #include "ui.h" using namespace std; -- cgit v1.2.3-54-g00ecf