# Makefile for molecule file readers

.SUFFIXES:

PLUGINAPI = molfile_plugin.h vmdplugin.h
COMPILEDIR = ../compile
ARCHDIR=${COMPILEDIR}/lib_${ARCH}/molfile

SRCDIR = src
INCDIR = -I../include -I${SRCDIR}

VPATH = src ../include ${ARCHDIR}

#
# Rules
#

STATICPLUGINS = cpmdplugin psfplugin pdbplugin dcdplugin babelplugin gromacsplugin parmplugin crdplugin namdbinplugin binposplugin webpdbplugin graspplugin stlplugin cubeplugin edmplugin ccp4plugin dsn6plugin brixplugin pltplugin raster3dplugin parm7plugin rst7plugin xyzplugin corplugin moldenplugin phiplugin grdplugin dxplugin mapplugin avsplugin
PLUGINS = cpmdplugin.so psfplugin.so pdbplugin.so dcdplugin.so babelplugin.so gromacsplugin.so parmplugin.so crdplugin.so namdbinplugin.so binposplugin.so webpdbplugin.so graspplugin.so stlplugin.so cubeplugin.so edmplugin.so ccp4plugin.so dsn6plugin.so brixplugin.so pltplugin.so raster3dplugin.so parm7plugin.so rst7plugin.so xyzplugin.so corplugin.so moldenplugin.so phiplugin.so grdplugin.so dxplugin.so mapplugin.so avsplugin.so
STATICS = libmolfile_plugin.a libmolfile_plugin.h
WIN32STATICS = libmolfile_plugin.lib libmolfile_plugin.h
DISTFILES = $(PLUGINS) $(STATICS) $(WIN32STATICS)

dynlibs: ${ARCHDIR} mesg $(PLUGINS)

staticlibs: ${ARCHDIR} $(STATICS) 
win32staticlibs: ${ARCHDIR} $(WIN32STATICS)

distrib:
	for file in $(DISTFILES) ; do \
		for localname in `find ../compile -name $$file -print`; do \
			pluginname=`echo $$localname | sed s/..\\\/compile\\\/lib_// `; \
			dir=`dirname $(PLUGINDIR)/$$pluginname`; \
			mkdir -p $$dir; \
			cp -p $$localname $(PLUGINDIR)/$$pluginname; \
		done; \
	done;

	
mesg:
	@echo "Building Molecule File Reader plugins"


#
# plugin library rules
#

cpmdplugin.so: ${ARCHDIR}/cpmdplugin.o 
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

psfplugin.so: ${ARCHDIR}/psfplugin.o 
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

PDBPLUGINOBJS = ${ARCHDIR}/pdbplugin.o 
pdbplugin.so: ${PDBPLUGINOBJS} 
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ ${PDBPLUGINOBJS} $(LDFLAGS)

DCDPLUGINOBJS = ${ARCHDIR}/dcdplugin.o 
dcdplugin.so: ${DCDPLUGINOBJS} 
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ ${DCDPLUGINOBJS} $(LDFLAGS)

BABELPLUGINOBJS = ${ARCHDIR}/babelplugin.o 
babelplugin.so: ${BABELPLUGINOBJS} 
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ ${BABELPLUGINOBJS} $(LDFLAGS)

GROMACSPLUGINOBJS = ${ARCHDIR}/gromacsplugin.o
gromacsplugin.so: ${GROMACSPLUGINOBJS} 
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ ${GROMACSPLUGINOBJS} $(LDFLAGS)

PARMPLUGINOBJS = ${ARCHDIR}/parmplugin.o 
parmplugin.so: ${PARMPLUGINOBJS} 
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ ${PARMPLUGINOBJS} $(LDFLAGS)

crdplugin.so: ${ARCHDIR}/crdplugin.o
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

namdbinplugin.so: ${ARCHDIR}/namdbinplugin.o
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

binposplugin.so: ${ARCHDIR}/binposplugin.o
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

WEBPDBPLUGINOBJS = ${ARCHDIR}/webpdbplugin.o 
webpdbplugin.so: ${WEBPDBPLUGINOBJS} 
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ ${WEBPDBPLUGINOBJS} $(TCLLIB) $(TCLLDFLAGS) $(LDFLAGS)

graspplugin.so: ${ARCHDIR}/graspplugin.o
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

stlplugin.so: ${ARCHDIR}/stlplugin.o
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

cubeplugin.so: ${ARCHDIR}/cubeplugin.o
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

edmplugin.so: ${ARCHDIR}/edmplugin.o
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

ccp4plugin.so: ${ARCHDIR}/ccp4plugin.o
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

dsn6plugin.so: ${ARCHDIR}/dsn6plugin.o
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

brixplugin.so: ${ARCHDIR}/brixplugin.o
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

pltplugin.so: ${ARCHDIR}/pltplugin.o
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

raster3dplugin.so: ${ARCHDIR}/raster3dplugin.o
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

rst7plugin.so: ${ARCHDIR}/rst7plugin.o 
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

parm7plugin.so: ${ARCHDIR}/parm7plugin.o 
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

xyzplugin.so: ${ARCHDIR}/xyzplugin.o 
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

corplugin.so: ${ARCHDIR}/corplugin.o 
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

moldenplugin.so: ${ARCHDIR}/moldenplugin.o 
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

phiplugin.so: ${ARCHDIR}/phiplugin.o 
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

grdplugin.so: ${ARCHDIR}/grdplugin.o 
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

dxplugin.so: ${ARCHDIR}/dxplugin.o 
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

mapplugin.so: ${ARCHDIR}/mapplugin.o 
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

avsplugin.so: ${ARCHDIR}/avsplugin.o 
	$(SHLD) $(LOPTO)${ARCHDIR}/$@ $? $(LDFLAGS)

#
# object files
#
${ARCHDIR}/cpmdplugin.o: cpmdplugin.c ${PLUGINAPI} 
	$(CC) $(CCFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/psfplugin.o: psfplugin.c ${PLUGINAPI} 
	$(CC) $(CCFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/pdbplugin.o: pdbplugin.c ${PLUGINAPI}
	$(CC) $(CCFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/dcdplugin.o: dcdplugin.c readdcd.h ${PLUGINAPI}
	$(CC) $(CCFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/babelplugin.o: babelplugin.c readpdb.h vmddir.h ${PLUGINAPI}
	$(CC) $(CCFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/gromacsplugin.o: gromacsplugin.C ${PLUGINAPI} 
	$(CXX) $(CXXFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/parmplugin.o: parmplugin.C ${PLUGINAPI} 
	$(CXX) $(CXXFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/crdplugin.o: crdplugin.c ${PLUGINAPI}
	$(CC) $(CCFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/namdbinplugin.o: namdbinplugin.c ${PLUGINAPI}
	$(CC) $(CCFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/binposplugin.o: binposplugin.c ${PLUGINAPI}
	$(CC) $(CCFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/webpdbplugin.o: webpdbplugin.c ${PLUGINAPI} 
	$(CC) $(CCFLAGS) $(TCLINC) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/graspplugin.o: graspplugin.C ${PLUGINAPI}
	$(CXX) $(CXXFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/stlplugin.o: stlplugin.C ${PLUGINAPI}
	$(CXX) $(CXXFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/cubeplugin.o: cubeplugin.C ${PLUGINAPI}
	$(CXX) $(CXXFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/edmplugin.o: edmplugin.C ${PLUGINAPI}
	$(CXX) $(CXXFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/ccp4plugin.o: ccp4plugin.C ${PLUGINAPI}
	$(CXX) $(CXXFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/dsn6plugin.o: dsn6plugin.C ${PLUGINAPI}
	$(CXX) $(CXXFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/brixplugin.o: brixplugin.C ${PLUGINAPI}
	$(CXX) $(CXXFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/pltplugin.o: pltplugin.C ${PLUGINAPI}
	$(CXX) $(CXXFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/raster3dplugin.o: raster3dplugin.C ${PLUGINAPI}
	$(CXX) $(CXXFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/rst7plugin.o: rst7plugin.c ${PLUGINAPI} 
	$(CC) $(CCFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/parm7plugin.o: parm7plugin.C ${PLUGINAPI} 
	$(CXX) $(CXXFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/xyzplugin.o: xyzplugin.c ${PLUGINAPI} 
	$(CC) $(CCFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/corplugin.o: corplugin.c ${PLUGINAPI} 
	$(CC) $(CCFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/moldenplugin.o: moldenplugin.c ${PLUGINAPI} 
	$(CC) $(CCFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/phiplugin.o: phiplugin.C ${PLUGINAPI} 
	$(CXX) $(CXXFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/grdplugin.o: grdplugin.C ${PLUGINAPI} 
	$(CXX) $(CXXFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/dxplugin.o: dxplugin.C ${PLUGINAPI} 
	$(CXX) $(CXXFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/mapplugin.o: mapplugin.C ${PLUGINAPI} 
	$(CXX) $(CXXFLAGS) $(INCDIR) -c $< $(COPTO)$@

${ARCHDIR}/avsplugin.o: avsplugin.C ${PLUGINAPI} 
	$(CXX) $(CXXFLAGS) $(INCDIR) -c $< $(COPTO)$@

#
# archive rules
#

ARCHIVEOBJS = ${ARCHDIR}/cpmdplugin-s.o ${ARCHDIR}/psfplugin-s.o ${ARCHDIR}/pdbplugin-s.o ${ARCHDIR}/dcdplugin-s.o ${ARCHDIR}/babelplugin-s.o ${ARCHDIR}/gromacsplugin-s.o ${ARCHDIR}/parmplugin-s.o ${ARCHDIR}/crdplugin-s.o ${ARCHDIR}/namdbinplugin-s.o ${ARCHDIR}/binposplugin-s.o ${ARCHDIR}/webpdbplugin-s.o ${ARCHDIR}/graspplugin-s.o ${ARCHDIR}/stlplugin-s.o ${ARCHDIR}/edmplugin-s.o ${ARCHDIR}/ccp4plugin-s.o ${ARCHDIR}/dsn6plugin-s.o ${ARCHDIR}/brixplugin-s.o ${ARCHDIR}/pltplugin-s.o ${ARCHDIR}/cubeplugin-s.o ${ARCHDIR}/raster3dplugin-s.o ${ARCHDIR}/rst7plugin-s.o ${ARCHDIR}/parm7plugin-s.o ${ARCHDIR}/xyzplugin-s.o ${ARCHDIR}/corplugin-s.o ${ARCHDIR}/moldenplugin-s.o ${ARCHDIR}/phiplugin-s.o ${ARCHDIR}/grdplugin-s.o ${ARCHDIR}/dxplugin-s.o ${ARCHDIR}/mapplugin-s.o ${ARCHDIR}/avsplugin-s.o




libmolfile_plugin.a: ${ARCHIVEOBJS}
	rm -f ${ARCHDIR}/$@ 
	ar cr ${ARCHDIR}/$@ ${ARCHIVEOBJS} 
	$(RANLIB) ${ARCHDIR}/$@

libmolfile_plugin.lib: ${ARCHIVEOBJS}
	rm -f ${ARCHDIR}/$@ 
	lib /OUT:${ARCHDIR}/$@ ${ARCHIVEOBJS}

libmolfile_plugin.h: ${ARCHIVEOBJS}
	rm -f ${ARCHDIR}/$@
	touch ${ARCHDIR}/$@
	../create_static_header.sh MOLFILE molfile ${ARCHDIR}/$@ ${STATICPLUGINS}

#
# object files suitable for static linking
#

${ARCHDIR}/cpmdplugin-s.o: cpmdplugin.c ${PLUGINAPI}
	${CC} ${CCFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_cpmdplugin" -c $< $(COPTO)$@

${ARCHDIR}/psfplugin-s.o: psfplugin.c ${PLUGINAPI}
	${CC} ${CCFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_psfplugin" -c $< $(COPTO)$@

${ARCHDIR}/pdbplugin-s.o: pdbplugin.c ${PLUGINAPI}
	${CC} ${CCFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_pdbplugin" -c $< $(COPTO)$@

${ARCHDIR}/dcdplugin-s.o: dcdplugin.c ${PLUGINAPI}
	${CC} ${CCFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_dcdplugin" -c $< $(COPTO)$@

${ARCHDIR}/babelplugin-s.o: babelplugin.c ${PLUGINAPI}
	${CC} ${CCFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_babelplugin" -c $< $(COPTO)$@

${ARCHDIR}/gromacsplugin-s.o: gromacsplugin.C ${PLUGINAPI}
	${CXX} ${CXXFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_gromacsplugin" -c $< $(COPTO)$@

${ARCHDIR}/parmplugin-s.o: parmplugin.C ${PLUGINAPI}
	${CXX} ${CXXFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_parmplugin" -c $< $(COPTO)$@

${ARCHDIR}/crdplugin-s.o: crdplugin.c ${PLUGINAPI}
	${CC} ${CCFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_crdplugin" -c $< $(COPTO)$@

${ARCHDIR}/namdbinplugin-s.o: namdbinplugin.c ${PLUGINAPI}
	${CC} ${CCFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_namdbinplugin" -c $< $(COPTO)$@

${ARCHDIR}/binposplugin-s.o: binposplugin.c ${PLUGINAPI}
	${CC} ${CCFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_binposplugin" -c $< $(COPTO)$@

${ARCHDIR}/webpdbplugin-s.o: webpdbplugin.c ${PLUGINAPI}
	${CC} ${CCFLAGS} $(INCDIR) $(TCLINC) -D"VMDPLUGIN=molfile_webpdbplugin" -c $< $(COPTO)$@

${ARCHDIR}/graspplugin-s.o: graspplugin.C ${PLUGINAPI}
	${CXX} ${CXXFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_graspplugin" -c $< $(COPTO)$@

${ARCHDIR}/stlplugin-s.o: stlplugin.C ${PLUGINAPI}
	${CXX} ${CXXFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_stlplugin" -c $< $(COPTO)$@

${ARCHDIR}/cubeplugin-s.o: cubeplugin.C ${PLUGINAPI}
	${CXX} ${CXXFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_cubeplugin" -c $< $(COPTO)$@

${ARCHDIR}/edmplugin-s.o: edmplugin.C ${PLUGINAPI}
	${CXX} ${CXXFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_edmplugin" -c $< $(COPTO)$@

${ARCHDIR}/ccp4plugin-s.o: ccp4plugin.C ${PLUGINAPI}
	${CXX} ${CXXFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_ccp4plugin" -c $< $(COPTO)$@

${ARCHDIR}/dsn6plugin-s.o: dsn6plugin.C ${PLUGINAPI}
	${CXX} ${CXXFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_dsn6plugin" -c $< $(COPTO)$@

${ARCHDIR}/brixplugin-s.o: brixplugin.C ${PLUGINAPI}
	${CXX} ${CXXFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_brixplugin" -c $< $(COPTO)$@

${ARCHDIR}/pltplugin-s.o: pltplugin.C ${PLUGINAPI}
	${CXX} ${CXXFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_pltplugin" -c $< $(COPTO)$@

${ARCHDIR}/raster3dplugin-s.o: raster3dplugin.C ${PLUGINAPI}
	${CXX} ${CXXFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_raster3dplugin" -c $< $(COPTO)$@

${ARCHDIR}/rst7plugin-s.o: rst7plugin.c ${PLUGINAPI}
	${CC} ${CCFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_rst7plugin" -c $< $(COPTO)$@

${ARCHDIR}/parm7plugin-s.o: parm7plugin.C ${PLUGINAPI}
	${CXX} ${CXXFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_parm7plugin" -c $< $(COPTO)$@

${ARCHDIR}/xyzplugin-s.o: xyzplugin.c ${PLUGINAPI}
	${CC} ${CCFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_xyzplugin" -c $< $(COPTO)$@

${ARCHDIR}/corplugin-s.o: corplugin.c ${PLUGINAPI}
	${CC} ${CCFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_corplugin" -c $< $(COPTO)$@

${ARCHDIR}/moldenplugin-s.o: moldenplugin.c ${PLUGINAPI}
	${CC} ${CCFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_moldenplugin" -c $< $(COPTO)$@

${ARCHDIR}/phiplugin-s.o: phiplugin.C ${PLUGINAPI}
	${CXX} ${CXXFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_phiplugin" -c $< $(COPTO)$@

${ARCHDIR}/grdplugin-s.o: grdplugin.C ${PLUGINAPI}
	${CXX} ${CXXFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_grdplugin" -c $< $(COPTO)$@

${ARCHDIR}/dxplugin-s.o: dxplugin.C ${PLUGINAPI}
	${CXX} ${CXXFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_dxplugin" -c $< $(COPTO)$@

${ARCHDIR}/mapplugin-s.o: mapplugin.C ${PLUGINAPI}
	${CXX} ${CXXFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_mapplugin" -c $< $(COPTO)$@

${ARCHDIR}/avsplugin-s.o: avsplugin.C ${PLUGINAPI}
	${CXX} ${CXXFLAGS} $(INCDIR) -D"VMDPLUGIN=molfile_avsplugin" -c $< $(COPTO)$@


${ARCHDIR} :
	mkdir -p ${ARCHDIR}

clean:
	find ${COMPILEDIR} \( -name *.o -o -name *.a -o -name *.so -o -name *.dll \) -print | xargs rm -f

