CC=g++

DEFINES=-DIS_LINUX -DZFP=zfp
WARNINGS=-w
BINARY=ray3
OPTIMIZATION1=-O3 -ffast-math -funroll-loops
OPTIMIZATION2=-ffast-math -funroll-loops
DEBUG=

CCOPTIONS=$(DEFINES) $(WARNINGS) $(OPTIMIZATION1) $(INCLUDES) $(DEBUG)
CCOPTIONS_NO=$(DEFINES) $(WARNINGS) $(INCLUDES) $(OPTIMIZATION2) $(DEBUG)

OBJECTS=3dpoly.o bmpwrite.o ppmwrite.o bumpbase.o bumpmaps.o cameras.o dust.o\
        eqnobjs.o highfiel.o lights.o modifier.o objects.o polynome.o\
        polysolv.o ray20.o sturm.o syntax.o textbase.o\
        textures.o trace.o readbmp.o sor.o metaball.o minigauss.o\
        exp_parser.o parser.o parser_funclib.o ray30main.o mesh.o

ray3 : $(OBJECTS)
	$(CC) $(CCOPTIONS) -o ray3 $(OBJECTS) $(LDFLAGS)

3dpoly.o : 3dpoly.cc 3dpoly.h
	$(CC) $(CCOPTIONS) -o 3dpoly.o -c 3dpoly.cc

bmpwrite.o : bmpwrite.cc bmpwrite.h
	$(CC) $(CCOPTIONS) -o bmpwrite.o -c bmpwrite.cc

ppmwrite.o : ppmwrite.cc ppmwrite.h
	$(CC) $(CCOPTIONS) -o ppmwrite.o -c ppmwrite.cc

bumpbase.o : bumpbase.cc bumpbase.h
	$(CC) $(CCOPTIONS) -o bumpbase.o -c bumpbase.cc

bumpmaps.o : bumpmaps.cc bumpmaps.h
	$(CC) $(CCOPTIONS) -o bumpmaps.o -c bumpmaps.cc

cameras.o : cameras.cc cameras.h
	$(CC) $(CCOPTIONS) -o cameras.o -c cameras.cc

dust.o : dust.cc 
	$(CC) $(CCOPTIONS) -o dust.o -c dust.cc

eqnobjs.o : eqnobjs.cc
	$(CC) $(CCOPTIONS) -o eqnobjs.o -c eqnobjs.cc

highfiel.o : highfiel.cc
	$(CC) $(CCOPTIONS) -o highfiel.o -c highfiel.cc

lights.o : lights.cc lights.h
	$(CC) $(CCOPTIONS) -o lights.o -c lights.cc

modifier.o : modifier.cc modifier.h
	$(CC) $(CCOPTIONS) -o modifier.o -c modifier.cc

objects.o : objects.cc objects.h
	$(CC) $(CCOPTIONS) -o objects.o -c objects.cc

polynome.o : polynome.cc polynome.h
	$(CC) $(CCOPTIONS) -o polynome.o -c polynome.cc

polysolv.o : polysolv.cc polysolv.h
	$(CC) $(CCOPTIONS) -o polysolv.o -c polysolv.cc

ray20.o : ray20.cc ray20.h
	$(CC) $(CCOPTIONS) -o ray20.o -c ray20.cc

sturm.o : sturm.cc sturm.h
	$(CC) $(CCOPTIONS) -o sturm.o -c sturm.cc

syntax.o : syntax.cc syntax.h
	$(CC) $(CCOPTIONS) -o syntax.o -c syntax.cc

textbase.o : textbase.cc textbase.h
	$(CC) $(CCOPTIONS) -o textbase.o -c textbase.cc

textures.o : textures.cc textures.h
	$(CC) $(CCOPTIONS) -o textures.o -c textures.cc

trace.o : trace.cc
	$(CC) $(CCOPTIONS) -o trace.o -c trace.cc

readbmp.o : readbmp.cc readbmp.h
	$(CC) $(CCOPTIONS) -o readbmp.o -c readbmp.cc

#ray20mai_linux.o : ray20mai_linux.cc
#	$(CC) $(CCOPTIONS) -o ray20mai_linux.o -c ray20mai_linux.cc

sor.o : sor.cc
	$(CC) $(CCOPTIONS) -o sor.o -c sor.cc

metaball.o : metaball.cc
	$(CC) $(CCOPTIONS_NO) -o metaball.o -c metaball.cc

mesh.o : mesh.cc
	$(CC) $(CCOPTIONS_NO) -o mesh.o -c mesh.cc

parser.o : parser.cc parser.h
	$(CC) $(CCOPTIONS_NO) -o parser.o -c parser.cc

parser_funclib.o : parser_funclib.cc parser.h
	$(CC) $(CCOPTIONS) -o parser_funclib.o -c parser_funclib.cc

exp_parser.o : exp_parser.cc exp_parser.h
	$(CC) $(CCOPTIONS) -o exp_parser.o -c exp_parser.cc

minigauss.o : minigauss.cc minigauss.h
	$(CC) $(CCOPTIONS) -o minigauss.o -c minigauss.cc

ray30main.o : ray30main.cc 
	$(CC) $(CCOPTIONS) -o ray30main.o -c ray30main.cc
	

