# this makefile is designed for Unix machines (optimized for maximum speed)
# compile using make -f makefile.unix

CC=gcc
CPLUSPLUS=g++
CFLAGS=-O3 -funroll-loops -fomit-frame-pointer -fcaller-saves -ffast-math -DUNIX -DMALLOC 
LD=$(CC)
LDFLAGS=
LDLIBS=-lm

#ifdef ANASTAS
#Anastas_OBJ=Anastas/atractor.o Anastas/htable.o Anastas/lians.o Anastas/parser.o Anastas/surtree.o
#CFLAGS+=-DANASTAS
#LD=$(CPLUSPLUS)
#endif

all: Dgm Plotdgm 
Dgm: FileIO.o Memory.o Mesh.o Progress.o Dgm.o Solver.o Time.o Triangle.o 
	$(LD) $(LDFLAGS) $(LDLIBS) -o $@ FileIO.o Memory.o Mesh.o Progress.o Dgm.o Solver.o Time.o Triangle.o 

Plotdgm: FileIO.o Memory.o Mesh.o Progress.o Plotdgm.o Solver.o Time.o Triangle.o 
	$(LD) $(LDFLAGS) $(LDLIBS) -o $@ FileIO.o Memory.o Mesh.o Progress.o Plotdgm.o Solver.o Time.o Triangle.o 

Dgm.o: Dgm.c FileIO.h Memory.h Mesh.h Solver.h Time.h Types.h 
	$(CC) $(CFLAGS) -c -o $@ Dgm.c 

Plotdgm.o: Plotdgm.c FileIO.h Memory.h Mesh.h Solver.h Time.h Types.h 
	$(CC) $(CFLAGS) -c -o $@ Plotdgm.c 

Triangle.o: Triangle.c Triangle.h Types.h
	$(CC) $(CFLAGS) -c -o $@ Triangle.c

FileIO.o: FileIO.c FileIO.h Memory.h Types.h
	$(CC) $(CFLAGS) -c -o $@ FileIO.c

Solver.o: Solver.c  FileIO.c FileIO.h Memory.h Mesh.h Progress.h Solver.h Triangle.h Types.h
	$(CC) $(CFLAGS) -c -o $@ Solver.c

Time.o: Time.c
	$(CC) $(CFLAGS) -c -o $@ Time.c

Mesh.o : Mesh.c Error.h FileIO.o Memory.h Mesh.h Progress.h Types.h
	$(CC) $(CFLAGS) -c -o $@ Mesh.c

Memory.o: Memory.c Error.h Memory.h Types.h
	$(CC) $(CFLAGS) -c -o $@ Memory.c

Progress.o: Progress.c Progress.h Types.h
	$(CC) $(CFLAGS) -c -o $@ Progress.c


