38 lines
690 B
Makefile
38 lines
690 B
Makefile
|
|
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
|