LEX=flex YACC=bison LIBS=-ly -lfl -lm CC=gcc PROG=regn TRASH=lex.yy.c $(PROG).tab.c $(PROG) $(PROG).tab.h $(PROG).output $(PROG): $(PROG).tab.o lex.yy.o ast.c codegen.c $(CC) -ggdb -o $@ $^ $(LIBS) $(PROG).tab.c $(PROG).tab.h: $(PROG).y $(YACC) -d -v $(PROG).y lex.yy.c: $(PROG).l $(LEX) $(PROG).l %.o: %.c $(CC) -ggdb -c -o $@ $^ PHONY: clean run run: $(PROG) ./$(PROG) clean: rm -f *.o rm -f $(TRASH)