################################################################
# Makefile for distributed iterative methods code
# Victor Eijkhout
# pvm version, generated 94/11/04
################################################################
# VAX 

#
# User macros
#
RANLIB = echo
LINK = ${FC}
EXTRA_OBJS = 

#
# Location of PVM;
# PVM_ROOT and PVM_ARCH are supposed to be set on the shell level
#
PVM_LIB3 = ${PVM_ROOT}/lib/${PVM_ARCH}/libfpvm3.a \
		${PVM_ROOT}/lib/${PVM_ARCH}/libpvm3.a
PVM_BIN = ${PVM_ROOT}/bin/${PVM_ARCH}

#
# default definitions of FC, FFLAGS, CC, CFLAGS etc are used.
#
# FC = 
# FFLAGS = 
# CC = 
# CFLAGS = 

#
# object files for the PVM code
#
NODE_OBJS =  node.o demo.o demo_matread.o readr.o demo_cinp.o
READ_OBJS =  r-auxs.o r-blas_auxs.o r-lapack_auxs.o r-coma.o r-comm.o r-domain.o r-iter.o r-matrix.o r-mat_crs.o r-prec.o r-views.o r-node.o r-demo.o r-demo_matread.o r-readr.o r-demo_cinp.o
LIB_OBJS =  auxs.o blas_auxs.o lapack_auxs.o coma.o comm.o domain.o iter.o matrix.o mat_crs.o prec.o views.o mat_dia.o mat_grd.o prec_crs.o prec_dia.o prec_grd.o varmap.o acomm.o precreate.o traffic.o iterate.o clock00.o

default :
	-rm -f *.f *.c
	ln ../src/library/*.f . ; ln ../src/library/*.c .
	ln ../src/demo/*.f . ; ln ../src/demo/*.c .
	make ARCH=${PVM_ARCH} node reader host

acomm.o iterate.o demo_cinp.o precreate.o traffic.o : cg_headers.h
node : node.o pvmcg_demo.a pvmcg.a
	${LINK} -o cgnode node.o pvmcg_demo.a pvmcg.a ${PVM_LIB3} \
		${EXTRA_OBJS}
	mv cgnode ${PVM_BIN}
reader : r-node.o pvmcg_reader.a
	${LINK} -o cgreader r-node.o pvmcg_reader.a ${PVM_LIB3} \
		${EXTRA_OBJS}
	mv cgreader ${PVM_BIN}
host : cghost.o
	${LINK} -o cghost cghost.o ${PVM_LIB3} \
		${EXTRA_OBJS}
	rm -f ../cghost ; ln cghost ..
pvmcg.a : ${LIB_OBJS} Makefile
	rm -f $@
	ar cr $@ ${LIB_OBJS}
	${RANLIB} $@
pvmcg_reader.a : ${READ_OBJS} Makefile
	rm -f $@
	ar cr $@ ${READ_OBJS}
	${RANLIB} $@
pvmcg_demo.a : ${NODE_OBJS} Makefile
	rm -f $@
	ar cr $@ ${NODE_OBJS}
	${RANLIB} $@

clean :
	-rm -f *.o *.a cgreader cghost cgnode *~ .nfs* core *.code

extmat :
	cd input.data ; make_extmat
extdiv :
	cd input.data ; make_extdiv

