SRCS =  ComputeBonded.C ComputeNonbonded.C LJTable.C Molecule.C Parameters.C PDB.C \
	PDBData.C ReadDCD.C utilities.C Timestep.C LoadDCD.C strlib.C MDEnergy.C \
	auxil.C Energies.C ReadDonAcc.C DATable.C Selection.C Ringbuf.C MDEBase.C \
	HBonds.C ParametersHB.C parm.C

HEAD =  ComputeBonded.h ComputeNonbonded.h LJTable.h Molecule.h Parameters.h PDB.h \
	PDBData.h ReadDCD.h utilities.h Timestep.h LoadDCD.h strlib.h \
	auxil.h Energies.h ReadDonAcc.h DATable.h Selection.h Ringbuf.h MDEBase.h \
	Slidewin.h parm.h

OBJS =  ComputeBonded.o ComputeNonbonded.o LJTable.o Molecule.o Parameters.o PDB.o \
	PDBData.o ReadDCD.o utilities.o Timestep.o LoadDCD.o strlib.o MDEnergy.o \
	auxil.o Energies.o DATable.o Selection.o Ringbuf.o MDEBase.o ParametersHB.o \
	parm.o

HBOBJS = hbondpsf.o ReadDonAcc.o HBonds.o strlib.o

MDEBIN = mdenergy hbondpsf

CCFLAGS = -g -Wall -ffast-math -DARCH_LINUX -Wno-deprecated
INCS = -I/usr/include/g++/backward -I/usr/include/g++ -I/usr/include/g++/i486-suse-linux
LIBS = -lm -static

BINDIR = /usr/local/bin
VMDSCRIPTPATH = ~/vmd/tcl

MACHARCH = $(shell uname -s)
MDENERGY = mdenergy.$(MACHARCH)
HBONDPSF = hbondpsf.$(MACHARCH)

linux:
	$(MAKE) all \
	"ARCH = Linux" \
	"CXX = g++" \
	"CCFLAGS = -O3 -Wall -ffast-math -DARCH_LINUX -Wno-deprecated" \
	"LIBS = -lm  -static"

irix:
	$(MAKE) mdenergy \
	"ARCH = IRIX" \
	"CXX = CC" \
	"CCFLAGS = -O3" \
	"LIBS = -lm -static"

sunos:
	$(MAKE) all \
	"ARCH = SunOS" \
	"CXX = CC" \
	"CCFLAGS = -fast -xO5 -native -xarch=v8plusa -fsimple=2 -DARCH_SUNCC" \
	"LIBS = -lm"

alpha-cxx:
	$(MAKE) all \
	"ARCH = alpha-cxx" \
	"CXX = cxx" \
	"CCFLAGS = -O4 -arch host -tune host -nocleanup" \
	"LIBS = -lm -static"

osx:
	$(MAKE) all \
	"ARCH = Darwin" \
	"CXX = g++" \
	"CCFLAGS = -O3 -Wall -ffast-math -Wno-deprecated -no-cpp-precomp" \
	"LIBS = -lm"


# for developing purpose: no optimizations, debugging-info
devel:
	$(MAKE) all \
	"ARCH = Linux" \
	"CXX = g++" \
	"CCFLAGS = -g -fno-inline -Wall -ffast-math -DARCH_LINUX -Wno-deprecated" \
	"LIBS = -lm  -static"

valgrind:
	$(MAKE) all \
	"ARCH = Linux" \
	"CXX = g++" \
	"CCFLAGS = -g -fno-inline -Wall -ffast-math -DARCH_LINUX -Wno-deprecated" \
	"LIBS = -lm "
                                                                                                  
                
ccmalloc:
	$(MAKE) mdenergy.ccmalloc \
	"ARCH = ccmalloc" \
	"CXX = ccmalloc g++" \
	"CCFLAGS = -g -Wall -ffast-math -DARCH_LINUX -Wno-deprecated" \
	"LIBS = -lm -static"

dmalloc:
	$(MAKE) mdenergy.dmalloc \
	"ARCH = dmalloc" \
	"CXX = g++" \
        "CCFLAGS = -g -Wall -ffast-math -DARCH_LINUX -DDMALLOC -Wno-deprecated" \
        "LIBS = -lm -ldmallocxx"


all:  $(MDEBIN) Makefile

hbondpsf: $(HBOBJS)
	$(CXX) $(CCFLAGS) $(HBOBJS) $(INCS) \
        -o hbondpsf.$(ARCH) $(LIBS)

%.o : %.C
	$(CXX) $(CCFLAGS) $(INCS) -c $*.C

mdenergy: $(OBJS)
	$(CXX) $(OBJS) -o mdenergy.$(ARCH) $(LIBS)

mdenergy.ccmalloc: $(OBJS)
	ccmalloc $(CXX) $(OBJS) -o mdenergy.ccmalloc $(LIBS)

mdenergy.dmalloc: $(OBJS)
	$(CXX) $(CCFLAGS) $(OBJS) -o mdenergy.dmalloc $(LIBS)

clean :
	rm -f $(OBJS) $(HBOBJS)

clear: clean
	rm -f *~ core out
	rm -f mdenergy.Linux mdenergy.devel mdenergy.IRIX mdenergy.SunOS mdenergy.alpha-cxx \
              mdenergy.ccmalloc mdenergy.dmalloc hbondpsf.Linux

depend:
	makedepend -DARCH_LINUX $(INCS) $(SRCS)

install:
	cp $(MDENERGY) $(BINDIR)
	cp $(HBONDPSF) $(BINDIR)
	cp ../vmd/mdenergy.tcl   $(VMDSCRIPTPATH)
	cp ../vmd/visual_mdenergy.tcl   $(VMDSCRIPTPATH)
	cp ../vmd/hbonds.tcl $(VMDSCRIPTPATH)
	cd $(BINDIR); rm mdenergy; ln -s $(MDENERGY) mdenergy

# DO NOT DELETE

