CC = gcc -std=c11 -pedantic -Wall -g -lm qc.o: qc.c qc.h @rm -f qc.o $(CC) -c -o qc.o qc.c p1: p1.c qc.o @rm -f p1 $(CC) -o p1 p1.c qc.o p2: p2.c qc.o @rm -f p2 $(CC) -o p2 p2.c qc.o p3: p3.c qc.o @rm -f p3 $(CC) -o p3 p3.c qc.o p4: p4.c qc.o @rm -f p4 $(CC) -o p4 p4.c qc.o p1.class: p1.java @rm -f p1.class javac p1.java p2.class: p2.java @rm -f p2.class javac p2.java p3.class: p3.java @rm -f p3.class javac p3.java p4.class: p4.java @rm -f p4.class javac p4.java OBJS = scan.o parse.o # comment out parse.o for standalone scan.l $(OBJS): Makefile parse.h # comment out parse.h for standalone scan.l LIBS = # -lfl # uncomment for standalone scan.l parse: $(OBJS) @rm -f parse $(CC) -o parse $(OBJS) $(LIBS) parse.c parse.h: parse.y Makefile bison -v -d -o parse.c parse.y # -t to enable debug scan.c: scan.l Makefile flex -t scan.l >scan.c # -d to enable debug TMPS = scan.c parse.c parse.h parse.output clean: rm -f a.out core p1 p2 p3 p4 p1.class p2.class p3.class p4.class $(OBJS) $(TMPS) parse qc.o