OBJDIR = src/.obj/
SRCDIR = src/

all: minimal toonshading uniform deform texture

$(OBJDIR):
	mkdir -p src/.obj

$(OBJDIR)/framework.o: $(OBJDIR) $(SRCDIR)/framework.c $(SRCDIR)/framework.h
	g++ -c $(SRCDIR)/framework.c -o $(OBJDIR)/framework.o -Wall -Wshadow

minimal: $(SRCDIR)minimal.c $(OBJDIR)/framework.o $(SRCDIR)/framework.h
	g++ -c $(SRCDIR)/minimal.c -o $(OBJDIR)/minimal.o
	g++ $(OBJDIR)/minimal.o $(OBJDIR)/framework.o -o minimal -lglut

toonshading: $(SRCDIR)/toonshading.c $(OBJDIR)/framework.o $(SRCDIR)/framework.h
	g++ -c $(SRCDIR)/toonshading.c -o $(OBJDIR)/toonshading.o
	g++ $(OBJDIR)/toonshading.o $(OBJDIR)/framework.o -o toonshading -lglut

uniform: $(SRCDIR)/uniform.c $(OBJDIR)/framework.o $(SRCDIR)/framework.h
	g++ -c $(SRCDIR)/uniform.c -o $(OBJDIR)/uniform.o
	g++ $(OBJDIR)/uniform.o $(OBJDIR)/framework.o -o uniform -lglut

deform: $(SRCDIR)/deform.c $(OBJDIR)/framework.o $(SRCDIR)/framework.h
	g++ -c $(SRCDIR)/deform.c -o $(OBJDIR)/deform.o
	g++ $(OBJDIR)/deform.o $(OBJDIR)/framework.o -o deform -lglut

texture: $(SRCDIR)/texture.c $(OBJDIR)/framework.o $(SRCDIR)/framework.h
	g++ -c $(SRCDIR)/texture.c -o $(OBJDIR)/texture.o -Wall -Wshadow
	g++ $(OBJDIR)/texture.o $(OBJDIR)/framework.o -o texture -lglut -Wall -Wshadow

clean:
	rm -f *~
	rm -f src/*~
	rm -f src/.obj/*.o
	rm -f minimal
	rm -f toonshading
	rm -f uniform
	rm -f deform
	rm -f texture