CC = g++
EXT=$(shell ./cpuflags.pl --opt )
FLAGS = -Wall $(EXT)
#FLAGS = -O3 -Wall -ffast-math
OBJS = utils-main.o utils-output.o utils-mrc.o

all:	cav chan fsv sol tun vdw vol

cavity:	cav
cavities:	cav
channel:	chan
channels:	chan
fsvcalc:	fsv
solvent:	sol
tunnel:	tun
volume:	vol
objects:	utils-main.o utils-output.o utils-mrc.o

cav:	objects cavities.cpp
	$(CC) $(FLAGS) -o Cavities.exe $(OBJS) cavities.cpp
	chmod 777 Cavities.exe
	mv Cavities.exe ../bin

chan:	objects channel.cpp
	$(CC) $(FLAGS) -o Channel.exe $(OBJS) channel.cpp
	chmod 777 Channel.exe
	mv Channel.exe ../bin

fsv:	objects fsv_calc.cpp
	$(CC) $(FLAGS) -o FsvCalc.exe $(OBJS) fsv_calc.cpp
	chmod 777 FsvCalc.exe
	mv FsvCalc.exe ../bin

sol:	objects solvent.cpp
	$(CC) $(FLAGS) -o Solvent.exe $(OBJS) solvent.cpp
	chmod 777 Solvent.exe
	mv Solvent.exe ../bin

tun:	objects tunnel.cpp
	$(CC) $(FLAGS) -o Tunnel.exe $(OBJS) tunnel.cpp
	chmod 777 Tunnel.exe
	mv Tunnel.exe ../bin

vdw:	objects vdw.cpp
	$(CC) $(FLAGS) -o VDW.exe $(OBJS) vdw.cpp
	chmod 777 VDW.exe
	mv VDW.exe ../bin

vol:	objects volume.cpp
	$(CC) $(FLAGS) -o Volume.exe $(OBJS) volume.cpp
	chmod 777 Volume.exe
	mv Volume.exe ../bin

utils-main.o:	utils-main.cpp
	$(CC) $(FLAGS) -c -o utils-main.o utils-main.cpp

utils-output.o:	utils-main.o utils-output.cpp
	$(CC) $(FLAGS) -c -o utils-output.o utils-output.cpp

utils-mrc.o:	utils-mrc.cpp
	$(CC) $(FLAGS) -c -o utils-mrc.o utils-mrc.cpp

clean:
	rm -fv *.o  *~

distclean:
	rm -fv *.o ../bin/*.exe *~

none:	
	echo "Please type make xxx, where xxx = cav, cha, fsv, sol, tun, vdw, or vol"
