PROGRAM = ../omm
#PROGRAM = ../omm_double

OMPOPT = -fopenmp
AVX    = -mavx

OBJS    =        \
Main.o           \
input.o          \
monitor.o        \
wiregrid.o       \
allocfree.o      \
solve.o          \
zmatrix.o        \
rhsvector.o      \
planewave.o      \
cholesky.o       \
cdot.o           \
zfeed.o          \
writeout.o       \
readout.o        \
outputlog.o      \
plot3dGeom.o     \
post.o           \
nearfield.o      \
farfield.o       \
outputFar0d.o    \
outputFar1d.o    \
outputFar2d.o    \
outputNear1d.o   \
outputNear2d.o   \
calcFar1d.o      \
calcFar2d.o      \
calcNear1d.o     \
calcNear2d.o     \
logNear1d.o      \
logNear2d.o      \
plot2dCurrent.o  \
plot3dCurrent.o  \
plot2dFreq.o     \
plot2dFreq0.o    \
plot2dFar0d0.o   \
plot2dFar1d0.o   \
plot3dFar2d.o    \
plot3dFar2d0.o   \
plot2dNear1d.o   \
plot2dNear1d0.o  \
plot2d3dNear2d.o \
plot2dNear2d0.o  \
plot3dNear2d0.o  \
cputime.o        \
ev2dlib.o        \
ev2d.o           \
ev3d.o

CC      = gcc
CFLAGS  = -O3 -I../include -Wall
#CFLAGS  += -std=c99
#CFLAGS  += -D_DOUBLE
LDFLAGS = -O3
LDFLAGS += $(OMPOPT)
LIBS    = -lm

$(PROGRAM): $(OBJS)
	@echo "Loading $(PROGRAM) ... "
	@$(CC) $(LDFLAGS) -o $(PROGRAM) $(OBJS) $(LIBS)

Main.o: Main.c
	$(CC) -c $(CFLAGS) $(OMPOPT) $?
zmatrix.o: zmatrix.c
	$(CC) -c $(CFLAGS) $(OMPOPT) $?
cholesky.o: cholesky.c
	$(CC) -c $(CFLAGS) $(OMPOPT) $?
calcFar1d.o: calcFar1d.c
	$(CC) -c $(CFLAGS) $(OMPOPT) $?
calcFar2d.o: calcFar2d.c
	$(CC) -c $(CFLAGS) $(OMPOPT) $?
calcNear1d.o: calcNear1d.c
	$(CC) -c $(CFLAGS) $(OMPOPT) $?
calcNear2d.o: calcNear2d.c
	$(CC) -c $(CFLAGS) $(OMPOPT) $?
allocfree.o: allocfree.c
	$(CC) -c $(CFLAGS) $(AVX) -D_SIMD $?
cdot.o: cdot.c
	$(CC) -c $(CFLAGS) $(AVX) -D_SIMD $?
plot2dNear1d0.o: plot2dNear1d0.c
	$(CC) -c $(CFLAGS) -Wno-format-overflow $?
plot2dNear2d0.o: plot2dNear2d0.c
	$(CC) -c $(CFLAGS) -Wno-format-overflow $?
plot3dNear2d0.o: plot3dNear2d0.c
	$(CC) -c $(CFLAGS) -Wno-format-overflow $?
#cputime.o: cputime.c
#	$(CC) -c -O2 $?

.c.o:
	$(CC) -c $(CFLAGS) $<

clean:
	rm -f *.o
