SHELL	= /bin/sh
OTFHOME	= /usr/local/otf
OTFINC	= ${OTFHOME}/include
OTFBIN	= ${OTFHOME}/bin
GENMOL	= ${OTFBIN}/genmol
INCDIR	= ${OTFINC}/${LIBNAME}
LIBDIR	= ${OTFHOME}/lib
MAN3DIR	= ${OTFHOME}/man/man3

.SUFFIXES:	.cc
CXX	= g++

.cc.o:
	${CXX} -c -o $*.o ${CFLAGS} $*.cc
#
#	Note: general.cc, ions.cc, amino.cc, camino.cc, namino.cc, and
#	nucleic.cc are generated by the extract.csh in the leap-templates
#	subdirectory (leap is a program for preparing input for UCSF AMBER).
#	The ions.cc file had to be editted to remove the +'s from function
#	names.

SRCS	= findres.cc \
	general.cc ions.cc amino.cc camino.cc namino.cc nucleic.cc

OBJS	= ${SRCS:.cc=.o}
LIBNAME	= tmpl
OPT	= -O2 -Wwrite-strings -felide-constructors
#OPT	= -g -Wall -Winline -Wenum-clash
CFLAGS	= ${OPT} -IMol -I${OTFINC} -Wwrite-strings -fno-implicit-templates
LIB	= lib${LIBNAME}.a

${LIB}: Mol ${OBJS}
	ar cr ${LIB} Mol/*.o ${OBJS}

sysv.install: ${LIB}
	-mkdir ${INCDIR}
	/etc/install -m 444 -f ${INCDIR} *.h
	cd Mol; /etc/install -m 444 -f ${INCDIR} *.h
	/etc/install -m 644 -f ${LIBDIR} ${LIB}
	/etc/install -m 444 -f ${MAN3DIR} *.3

bsd43.install: ${LIB}
	-mkdir ${INCDIR}
	install -c -m 444 *.h Mol/*.h ${INCDIR}
	install -c -m 644 ${LIB} ${LIBDIR}/${LIB}
	ranlib ${LIBDIR}/${LIB}
	install -c -m 444 *.3 ${MAN3DIR}

osf1.install: ${LIB}
	-mkdir ${INCDIR}
	for i in *.h Mol/*.h ; do \
		installbsd -c -m 444 $$i ${INCDIR} ; \
	done
	installbsd -c -m 644 ${LIB} ${LIBDIR}/${LIB}
	ranlib ${LIBDIR}/${LIB}
	for i in *.3 ; do \
		installbsd -c -m 444 $$i ${MAN3DIR} ; \
	done

Mol: ${LIBNAME}.genmol
	rm -rf Mol
	${GENMOL} -c "${OPT}" -v -k ${LIBNAME}.genmol

clean:
	rm -rf Mol ${OBJS} ${LIB} Makefile.save errs a.out ptrepository

spotless: clean

depend:
	mv Makefile Makefile.save
	sed -n '1,/DE\PEND/p' < Makefile.save > Makefile
	g++ -MM ${CFLAGS} ${SRCS} >> Makefile

### DEPEND
template.o : template.cc Mol/TmplMolecule.h Mol/TmplBondPtr.MPlex.h Mol/TmplBondPtr.Plex.h \
  Mol/TmplBondPtr.defs.h Mol/TmplBond.h Mol/TmplAtomPtr.MPlex.h Mol/TmplAtomPtr.Plex.h \
  Mol/TmplAtomPtr.defs.h Mol/TmplAtom.h Mol/Symbol.TmplResiduePtr.VHMap.h Mol/Symbol.TmplResiduePtr.Map.h \
  Mol/TmplResidue.h Mol/Symbol.TmplAtomPtr.VHMap.h Mol/Symbol.TmplAtomPtr.Map.h \
  /usr/local/otf/include/mol/Symbol.defs.h Mol/MolCoordSetId.TmplCoordSetPtr.AVLMap.h \
  Mol/MolCoordSetId.TmplCoordSetPtr.Map.h Mol/TmplCoordSet.h Mol/TmplCoord.MPlex.h \
  Mol/TmplCoord.Plex.h Mol/TmplCoord.defs.h Mol/TmplCoord.h /usr/local/otf/include/mol/MolCoordSetId.defs.h 
general.o : general.cc Mol/TmplMolecule.h Mol/TmplBondPtr.MPlex.h Mol/TmplBondPtr.Plex.h \
  Mol/TmplBondPtr.defs.h Mol/TmplBond.h Mol/TmplAtomPtr.MPlex.h Mol/TmplAtomPtr.Plex.h \
  Mol/TmplAtomPtr.defs.h Mol/TmplAtom.h Mol/Symbol.TmplResiduePtr.VHMap.h Mol/Symbol.TmplResiduePtr.Map.h \
  Mol/TmplResidue.h Mol/Symbol.TmplAtomPtr.VHMap.h Mol/Symbol.TmplAtomPtr.Map.h \
  /usr/local/otf/include/mol/Symbol.defs.h Mol/MolCoordSetId.TmplCoordSetPtr.AVLMap.h \
  Mol/MolCoordSetId.TmplCoordSetPtr.Map.h Mol/TmplCoordSet.h Mol/TmplCoord.MPlex.h \
  Mol/TmplCoord.Plex.h Mol/TmplCoord.defs.h Mol/TmplCoord.h /usr/local/otf/include/mol/MolCoordSetId.defs.h 
ions.o : ions.cc Mol/TmplMolecule.h Mol/TmplBondPtr.MPlex.h Mol/TmplBondPtr.Plex.h \
  Mol/TmplBondPtr.defs.h Mol/TmplBond.h Mol/TmplAtomPtr.MPlex.h Mol/TmplAtomPtr.Plex.h \
  Mol/TmplAtomPtr.defs.h Mol/TmplAtom.h Mol/Symbol.TmplResiduePtr.VHMap.h Mol/Symbol.TmplResiduePtr.Map.h \
  Mol/TmplResidue.h Mol/Symbol.TmplAtomPtr.VHMap.h Mol/Symbol.TmplAtomPtr.Map.h \
  /usr/local/otf/include/mol/Symbol.defs.h Mol/MolCoordSetId.TmplCoordSetPtr.AVLMap.h \
  Mol/MolCoordSetId.TmplCoordSetPtr.Map.h Mol/TmplCoordSet.h Mol/TmplCoord.MPlex.h \
  Mol/TmplCoord.Plex.h Mol/TmplCoord.defs.h Mol/TmplCoord.h /usr/local/otf/include/mol/MolCoordSetId.defs.h 
amino.o : amino.cc Mol/TmplMolecule.h Mol/TmplBondPtr.MPlex.h Mol/TmplBondPtr.Plex.h \
  Mol/TmplBondPtr.defs.h Mol/TmplBond.h Mol/TmplAtomPtr.MPlex.h Mol/TmplAtomPtr.Plex.h \
  Mol/TmplAtomPtr.defs.h Mol/TmplAtom.h Mol/Symbol.TmplResiduePtr.VHMap.h Mol/Symbol.TmplResiduePtr.Map.h \
  Mol/TmplResidue.h Mol/Symbol.TmplAtomPtr.VHMap.h Mol/Symbol.TmplAtomPtr.Map.h \
  /usr/local/otf/include/mol/Symbol.defs.h Mol/MolCoordSetId.TmplCoordSetPtr.AVLMap.h \
  Mol/MolCoordSetId.TmplCoordSetPtr.Map.h Mol/TmplCoordSet.h Mol/TmplCoord.MPlex.h \
  Mol/TmplCoord.Plex.h Mol/TmplCoord.defs.h Mol/TmplCoord.h /usr/local/otf/include/mol/MolCoordSetId.defs.h 
camino.o : camino.cc Mol/TmplMolecule.h Mol/TmplBondPtr.MPlex.h Mol/TmplBondPtr.Plex.h \
  Mol/TmplBondPtr.defs.h Mol/TmplBond.h Mol/TmplAtomPtr.MPlex.h Mol/TmplAtomPtr.Plex.h \
  Mol/TmplAtomPtr.defs.h Mol/TmplAtom.h Mol/Symbol.TmplResiduePtr.VHMap.h Mol/Symbol.TmplResiduePtr.Map.h \
  Mol/TmplResidue.h Mol/Symbol.TmplAtomPtr.VHMap.h Mol/Symbol.TmplAtomPtr.Map.h \
  /usr/local/otf/include/mol/Symbol.defs.h Mol/MolCoordSetId.TmplCoordSetPtr.AVLMap.h \
  Mol/MolCoordSetId.TmplCoordSetPtr.Map.h Mol/TmplCoordSet.h Mol/TmplCoord.MPlex.h \
  Mol/TmplCoord.Plex.h Mol/TmplCoord.defs.h Mol/TmplCoord.h /usr/local/otf/include/mol/MolCoordSetId.defs.h 
namino.o : namino.cc Mol/TmplMolecule.h Mol/TmplBondPtr.MPlex.h Mol/TmplBondPtr.Plex.h \
  Mol/TmplBondPtr.defs.h Mol/TmplBond.h Mol/TmplAtomPtr.MPlex.h Mol/TmplAtomPtr.Plex.h \
  Mol/TmplAtomPtr.defs.h Mol/TmplAtom.h Mol/Symbol.TmplResiduePtr.VHMap.h Mol/Symbol.TmplResiduePtr.Map.h \
  Mol/TmplResidue.h Mol/Symbol.TmplAtomPtr.VHMap.h Mol/Symbol.TmplAtomPtr.Map.h \
  /usr/local/otf/include/mol/Symbol.defs.h Mol/MolCoordSetId.TmplCoordSetPtr.AVLMap.h \
  Mol/MolCoordSetId.TmplCoordSetPtr.Map.h Mol/TmplCoordSet.h Mol/TmplCoord.MPlex.h \
  Mol/TmplCoord.Plex.h Mol/TmplCoord.defs.h Mol/TmplCoord.h /usr/local/otf/include/mol/MolCoordSetId.defs.h 
nucleic.o : nucleic.cc Mol/TmplMolecule.h Mol/TmplBondPtr.MPlex.h Mol/TmplBondPtr.Plex.h \
  Mol/TmplBondPtr.defs.h Mol/TmplBond.h Mol/TmplAtomPtr.MPlex.h Mol/TmplAtomPtr.Plex.h \
  Mol/TmplAtomPtr.defs.h Mol/TmplAtom.h Mol/Symbol.TmplResiduePtr.VHMap.h Mol/Symbol.TmplResiduePtr.Map.h \
  Mol/TmplResidue.h Mol/Symbol.TmplAtomPtr.VHMap.h Mol/Symbol.TmplAtomPtr.Map.h \
  /usr/local/otf/include/mol/Symbol.defs.h Mol/MolCoordSetId.TmplCoordSetPtr.AVLMap.h \
  Mol/MolCoordSetId.TmplCoordSetPtr.Map.h Mol/TmplCoordSet.h Mol/TmplCoord.MPlex.h \
  Mol/TmplCoord.Plex.h Mol/TmplCoord.defs.h Mol/TmplCoord.h /usr/local/otf/include/mol/MolCoordSetId.defs.h 
uamino.o : uamino.cc Mol/TmplMolecule.h Mol/TmplBondPtr.MPlex.h Mol/TmplBondPtr.Plex.h \
  Mol/TmplBondPtr.defs.h Mol/TmplBond.h Mol/TmplAtomPtr.MPlex.h Mol/TmplAtomPtr.Plex.h \
  Mol/TmplAtomPtr.defs.h Mol/TmplAtom.h Mol/Symbol.TmplResiduePtr.VHMap.h Mol/Symbol.TmplResiduePtr.Map.h \
  Mol/TmplResidue.h Mol/Symbol.TmplAtomPtr.VHMap.h Mol/Symbol.TmplAtomPtr.Map.h \
  /usr/local/otf/include/mol/Symbol.defs.h Mol/MolCoordSetId.TmplCoordSetPtr.AVLMap.h \
  Mol/MolCoordSetId.TmplCoordSetPtr.Map.h Mol/TmplCoordSet.h Mol/TmplCoord.MPlex.h \
  Mol/TmplCoord.Plex.h Mol/TmplCoord.defs.h Mol/TmplCoord.h /usr/local/otf/include/mol/MolCoordSetId.defs.h 
ucamino.o : ucamino.cc Mol/TmplMolecule.h Mol/TmplBondPtr.MPlex.h Mol/TmplBondPtr.Plex.h \
  Mol/TmplBondPtr.defs.h Mol/TmplBond.h Mol/TmplAtomPtr.MPlex.h Mol/TmplAtomPtr.Plex.h \
  Mol/TmplAtomPtr.defs.h Mol/TmplAtom.h Mol/Symbol.TmplResiduePtr.VHMap.h Mol/Symbol.TmplResiduePtr.Map.h \
  Mol/TmplResidue.h Mol/Symbol.TmplAtomPtr.VHMap.h Mol/Symbol.TmplAtomPtr.Map.h \
  /usr/local/otf/include/mol/Symbol.defs.h Mol/MolCoordSetId.TmplCoordSetPtr.AVLMap.h \
  Mol/MolCoordSetId.TmplCoordSetPtr.Map.h Mol/TmplCoordSet.h Mol/TmplCoord.MPlex.h \
  Mol/TmplCoord.Plex.h Mol/TmplCoord.defs.h Mol/TmplCoord.h /usr/local/otf/include/mol/MolCoordSetId.defs.h 
unamino.o : unamino.cc Mol/TmplMolecule.h Mol/TmplBondPtr.MPlex.h Mol/TmplBondPtr.Plex.h \
  Mol/TmplBondPtr.defs.h Mol/TmplBond.h Mol/TmplAtomPtr.MPlex.h Mol/TmplAtomPtr.Plex.h \
  Mol/TmplAtomPtr.defs.h Mol/TmplAtom.h Mol/Symbol.TmplResiduePtr.VHMap.h Mol/Symbol.TmplResiduePtr.Map.h \
  Mol/TmplResidue.h Mol/Symbol.TmplAtomPtr.VHMap.h Mol/Symbol.TmplAtomPtr.Map.h \
  /usr/local/otf/include/mol/Symbol.defs.h Mol/MolCoordSetId.TmplCoordSetPtr.AVLMap.h \
  Mol/MolCoordSetId.TmplCoordSetPtr.Map.h Mol/TmplCoordSet.h Mol/TmplCoord.MPlex.h \
  Mol/TmplCoord.Plex.h Mol/TmplCoord.defs.h Mol/TmplCoord.h /usr/local/otf/include/mol/MolCoordSetId.defs.h 
unucleic.o : unucleic.cc Mol/TmplMolecule.h Mol/TmplBondPtr.MPlex.h Mol/TmplBondPtr.Plex.h \
  Mol/TmplBondPtr.defs.h Mol/TmplBond.h Mol/TmplAtomPtr.MPlex.h Mol/TmplAtomPtr.Plex.h \
  Mol/TmplAtomPtr.defs.h Mol/TmplAtom.h Mol/Symbol.TmplResiduePtr.VHMap.h Mol/Symbol.TmplResiduePtr.Map.h \
  Mol/TmplResidue.h Mol/Symbol.TmplAtomPtr.VHMap.h Mol/Symbol.TmplAtomPtr.Map.h \
  /usr/local/otf/include/mol/Symbol.defs.h Mol/MolCoordSetId.TmplCoordSetPtr.AVLMap.h \
  Mol/MolCoordSetId.TmplCoordSetPtr.Map.h Mol/TmplCoordSet.h Mol/TmplCoord.MPlex.h \
  Mol/TmplCoord.Plex.h Mol/TmplCoord.defs.h Mol/TmplCoord.h /usr/local/otf/include/mol/MolCoordSetId.defs.h 
