FLEX := flex BISON := bison PARSER := parser OBJS := lex.yy.o $(PARSER).tab.o $(patsubst %.cc,%.o,$(wildcard *.cc)) DEPS := $(OBJS:.o=.dep) all: $(DEPS) $(OBJS) %.o: %.cc $(CXX) -c -o $@ $(CPPFLAGS) $(CXXFLAGS) $< $(PARSER).tab.cc $(PARSER).tab.hh: $(PARSER).yy $(BISON) -d $< lex.yy.o: lex.yy.cc lex.yy.cc: $(PARSER).tab.hh lex.yy.cc: $(PARSER).lex $(FLEX) -o $@ $< # Make dependency files %.dep: %.cc @set -e; rm -f $@; \ $(CXX) -MM $(CPPFLAGS) $< > $@.$$$$; \ sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ rm -f $@.$$$$ clean: -rm -f lex.yy.cc $(PARSER).tab.cc $(PARSER).tab.hh *~ *.o *.dep # Include dependency files ifndef CLEAN -include $(DEPS) endif