##### User configurable options #####
 
ARCH        = sgi
ARCH        = solaris
COMM        = ch_p4
INSTALL_DIR = 
INSTALL_DIR = /usr/local/mpich-1.0.13
CC          = cc
CC          = gcc
CC          = /opt/mpi/bin/mpicc
OPTFLAGS    = -Wall -g
OPTFLAGS    = -O
OPTFLAGS    = -Wall -O4
#
LIB_PATH    = -L$(INSTALL_DIR)/lib/$(ARCH)/$(COMM)
LIB_LIST    = -lmpi -lpthread -lm
LIB_LIST    = -lmpi -lsocket -lnsl -lthread -lm
#
INCLUDE_DIR =  -I$(INSTALL_DIR)/include
 
### End User configurable options ###
 
CFLAGS  = $(OPTFLAGS) $(INCLUDE_DIR) 
LIBS    = $(LIB_PATH) $(LIB_LIST)

#-----------------------------------------------------------------------
 
PURIFY = /usr/local/purify-3.2/purify
PURIFY = 

.SUFFIXES : .o .c .C .a

#-----------------------------------------------------------------------

LIBS = \
       ../src/spoolesMPI.a \
       ../../misc/src/misc.a \
       ../../DFrontMtx/src/DFrontMtx.a \
       ../../DLinSystem/src/DLinSystem.a \
       ../../DDenseMtxManager/src/DDenseMtxManager.a \
       ../../DDenseMtxList/src/DDenseMtxList.a \
       ../../DDenseMtx/src/DDenseMtx.a \
       ../../DChvManager/src/DChvManager.a \
       ../../DChvList/src/DChvList.a \
       ../../DChv/src/DChv.a \
       ../../DA2/src/DA2.a \
       ../../DPencil/src/DPencil.a \
       ../../Lock/src/Lock.a \
       ../../GPart/src/GPart.a \
       ../../MSMD/src/MSMD.a \
       ../../ETree/src/ETree.a \
       ../../BKL/src/BKL.a \
       ../../BPG/src/BPG.a \
       ../../Network/src/Network.a \
       ../../DSTree/src/DSTree.a \
       ../../Tree/src/Tree.a \
       ../../Graph/src/Graph.a \
       ../../Perm/src/Perm.a \
       ../../DInpMtx/src/DInpMtx.a \
       ../../DVL/src/DVL.a \
       ../../Ideq/src/Ideq.a \
       ../../IVL/src/IVL.a \
       ../../DV/src/DV.a \
       ../../IIheap/src/IIheap.a \
       ../../IV/src/IV.a \
       ../../Utilities/src/Utilities.a \
       ../../Drand/src/Drand.a \
       $(LIB_PATH) $(LIB_LIST)

DRIVERS = testSplitDLinSystem testSplitDDenseMtx testSplitDInpMtx \
          testSplitDPencil testFactor allInOne testFullAdj testOrder
 
libs :
	cd ../src ; make spoolesMPI.a 
	cd ../../misc/src ; make misc.a
	cd ../../DFrontMtx/src ; make DFrontMtx.a
	cd ../../DLinSystem/src ; make DLinSystem.a
	cd ../../DDenseMtxManager/src ; make DDenseMtxManager.a
	cd ../../DDenseMtxList/src ; make DDenseMtxList.a
	cd ../../DDenseMtx/src ; make DDenseMtx.a
	cd ../../DChvManager/src ; make DChvManager.a
	cd ../../DChvList/src ; make DChvList.a
	cd ../../DChv/src ; make DChv.a
	cd ../../DA2/src ; make DA2.a
	cd ../../DPencil/src ; make DPencil.a
	cd ../../Lock/src ; make Lock.a
	cd ../../Drand/src ; make Drand.a
	cd ../../GPart/src ; make GPart.a
	cd ../../MSMD/src ; make MSMD.a
	cd ../../BKL/src ; make BKL.a
	cd ../../BPG/src ; make BPG.a
	cd ../../Network/src ; make Network.a
	cd ../../DSTree/src ; make DSTree.a
	cd ../../ETree/src ; make ETree.a
	cd ../../Tree/src ; make Tree.a
	cd ../../Graph/src ; make Graph.a
	cd ../../Perm/src ; make Perm.a
	cd ../../DInpMtx/src ; make DInpMtx.a
	cd ../../DVL/src ; make DVL.a
	cd ../../IVL/src ; make IVL.a
	cd ../../Ideq/src ; make Ideq.a
	cd ../../DV/src ; make DV.a
	cd ../../IIheap/src ; make IIheap.a
	cd ../../IV/src ; make IV.a
	cd ../../Utilities/src ; make Utilities.a

all : ${DRIVERS}
 
clean :
	rm -f *.a *.o ${DRIVERS}
 
allInOne : allInOne.o libs
	${PURIFY} ${CC} $@.o -o $@ ${LIBS} 
 
testFactor : testFactor.o libs
	${PURIFY} ${CC} $@.o -o $@ ${LIBS} 
 
testSplitDDenseMtx : testSplitDDenseMtx.o libs
	${PURIFY} ${CC} $@.o -o $@ ${LIBS} 
 
testSplitDInpMtx : testSplitDInpMtx.o libs
	${PURIFY} ${CC} $@.o -o $@ ${LIBS} 
 
testSplitDLinSystem : testSplitDLinSystem.o libs
	${PURIFY} ${CC} $@.o -o $@ ${LIBS} 
 
testSplitDPencil : testSplitDPencil.o libs
	${PURIFY} ${CC} $@.o -o $@ ${LIBS} 
 
testFactor : testFactor.o libs
	${PURIFY} ${CC} $@.o -o $@ ${LIBS} 
 
testFullAdj : testFullAdj.o libs
	${PURIFY} ${CC} $@.o -o $@ ${LIBS} 
 
testOrder : testOrder.o libs
	${PURIFY} ${CC} $@.o -o $@ ${LIBS} 

