# compiler
CC = g++

# linker
LD = g++

# compiler flags
CFLAGS = -Wno-deprecated -I/cs/cs4731/mesaGL/include

# linker flags
LDFLAGS = -Wno-deprecated -L/cs/cs4731/mesaGL/lib/ -lglut -lGL -lGLU -L/usr/X11R6/lib -lX11 -lXmu -lXi -lm

# used to clean
RM = /bin/rm -f

# generated object files
OBJS = BRT.o Vector3.o GeomObj.o Camera.o Ray.o Scene.o Shape.o 

#program file name
PROG = BRT

# to compile everything
all: $(PROG)

# linking the program
$(PROG): $(OBJS)
	$(LD) $(LDFLAGS) $(OBJS) -o $(PROG)

# rule for file "BRT.o"
BRT.o: BRT.cpp Camera.h GeomObj.h Ray.h Scene.h Shape.h Vector3.h
	$(CC) $(CFLAGS) -c BRT.cpp

Vector3.o: Vector3.cpp Camera.h GeomObj.h Ray.h Scene.h Shape.h Vector3.h
	$(CC) $(CFLAGS) -c Vector3.cpp

GeomObj.o: GeomObj.cpp Camera.h GeomObj.h Ray.h Scene.h Shape.h Vector3.h
	$(CC) $(CFLAGS) -c GeomObj.cpp

Camera.o: Camera.cpp Camera.h GeomObj.h Ray.h Scene.h Shape.h Vector3.h
	$(CC) $(CFLAGS) -c Camera.cpp

Ray.o: Ray.cpp Camera.h GeomObj.h Ray.h Scene.h Shape.h Vector3.h
	$(CC) $(CFLAGS) -c Ray.cpp

Scene.o: Scene.cpp Camera.h GeomObj.h Ray.h Scene.h Shape.h Vector3.h
	$(CC) $(CFLAGS) -c Scene.cpp

Shape.o: Shape.cpp Camera.h GeomObj.h Ray.h Scene.h Shape.h Vector3.h
	$(CC) $(CFLAGS) -c Shape.cpp

# cleanup
clean:
	$(RM) $(PROG) $(OBJS)
