| # This Makefile is designed to be simple and readable. It does not | |
| # aim at portability. It requires GNU Make. | |
| BASE = calc++ | |
| BISON = bison | |
| CXX = g++ | |
| FLEX = flex | |
| all: $(BASE) | |
| %.cc %.hh %.html %.gv: %.yy | |
| $(BISON) $(BISONFLAGS) --html --graph -o $*.cc $< | |
| %.cc: %.ll | |
| $(FLEX) $(FLEXFLAGS) -o$@ $< | |
| %.o: %.cc | |
| $(CXX) $(CXXFLAGS) -c -o$@ $< | |
| $(BASE): $(BASE).o driver.o parser.o scanner.o | |
| $(CXX) -o $@ $^ | |
| $(BASE).o: parser.hh | |
| parser.o: parser.hh | |
| scanner.o: parser.hh | |
| run: $(BASE) | |
| @echo "Type arithmetic expressions. Quit with ctrl-d." | |
| ./$< - | |
| CLEANFILES = \ | |
| $(BASE) *.o \ | |
| parser.hh parser.cc parser.output parser.xml parser.html parser.gv location.hh \ | |
| scanner.cc | |
| clean: | |
| rm -f $(CLEANFILES) |