CPP = g++
LINK = g++
LFLAGS = -lm -lpng
CPPFLAGS = -c -O2
RM = rm -f
OBJECTS= test.o vector.o heightfield.o shader.o tile.o pngtile.o \
         testheightfield.o simplelighting.o

test:  ${OBJECTS}
	${LINK} ${LFLAGS} -o test ${OBJECTS}

test.o: test.cpp vector.h shader.h heightfield.h
	${CPP} ${CPPFLAGS} test.cpp

# base classes
vector.o: vector.cpp vector.h
	${CPP} ${CPPFLAGS} vector.cpp

heightfield.o: heightfield.cpp heightfield.h vector.h
	${CPP} ${CPPFLAGS} heightfield.cpp

shader.o: shader.cpp shader.h vector.h heightfield.h
	${CPP} ${CPPFLAGS} shader.cpp

tile.o: tile.cpp tile.h vector.h heightfield.h shader.h
	${CPP} ${CPPFLAGS} tile.cpp

# derived classes
pngtile.o: pngtile.cpp pngtile.h tile.h vector.h heightfield.h shader.h
	${CPP} ${CPPFLAGS} pngtile.cpp

testheightfield.o: testheightfield.cpp testheightfield.h vector.h
	${CPP} ${CPPFLAGS} testheightfield.cpp

simplelighting.o: simplelighting.cpp simplelighting.h shader.h vector.h\
                  heightfield.h
	${CPP} ${CPPFLAGS} simplelighting.cpp
clean:
	${RM} *.o test
