#Makefile for FEM code
#define variables
objects= main.o FeModel.o QuadratureRule.o Shape.o Element.o Solver.o AMG.o PCG.o SLAF.o
CPP= g++             #compiler
opt= -O3             #optimization flag
prof= -g -pg         #profiling flag
warn= -pedantic      #warning flags
execname=main
ARCH      := $(shell uname)  #ifeq ($(ARCH),Linux

OPENGL= -lglut -lGLU -lGL -lm   #open gl
ITERINC=-I/home/james/UFTestMatrix/IterSolvers/src
ITERLIB=-L/home/james/UFTestMatrix/IterSolvers/src


#compile
$(execname): $(objects)
	$(CPP) $(opt) $(prof) $(warn) $(objects) $(ITERINC) -o $(execname) $(ITERLIB) $(OPENGL)

#OpenGL.o: OpenGL.cpp
#	$(CPP) $(opt) $(prof) $(warn) -c OpenGL.cpp $(OPENGL)
FeModel.o: FeModel.cpp
	$(CPP) $(opt) $(prof) $(warn) -c FeModel.cpp
QuadratureRule.o: QuadratureRule.cpp
	$(CPP) $(opt) $(prof) $(warn) -c QuadratureRule.cpp
Element.o: Element.cpp
	$(CPP) $(opt) $(prof) $(warn) -c Element.cpp
Shape.o: Shape.cpp
	$(CPP) $(opt) $(prof) $(warn) -c Shape.cpp
Solver.o: Solver.cpp
	$(CPP) $(opt) $(prof) $(warn) -c $(ITERINC) Solver.cpp 
main.o: main.cpp
	$(CPP) $(opt) $(prof) $(warn) -c main.cpp $(OPENGL)


#clean Makefile
clean:
	rm $(objects)
#end of Makefile

