 
CC = cc
CC = gcc
 
CFLAGS = -Wall -g
CFLAGS = -O
CFLAGS = -Wall -O4

PURIFY = /usr/local/purify-3.2/purify
PURIFY = 
 
.SUFFIXES : .o .c .a
 
#-----------------------------------------------------------------------

LIBS = \
       ../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 \
       ../../DVL/src/DVL.a \
       ../../SymbFac/src/SymbFac.a \
       ../../DPencil/src/DPencil.a \
       ../../Lock/src/Lock.a \
       ../../MSMD/src/MSMD.a \
       ../../GPart/src/GPart.a \
       ../../Network/src/Network.a \
       ../../BKL/src/BKL.a \
       ../../BPG/src/BPG.a \
       ../../ETree/src/ETree.a \
       ../../DSTree/src/DSTree.a \
       ../../Tree/src/Tree.a \
       ../../Graph/src/Graph.a \
       ../../DInpMtx/src/DInpMtx.a \
       ../../IIheap/src/IIheap.a \
       ../../IVL/src/IVL.a \
       ../../Perm/src/Perm.a \
       ../../Ideq/src/Ideq.a \
       ../../IV/src/IV.a \
       ../../DV/src/DV.a \
       ../../Coords/src/Coords.a \
       ../../Utilities/src/Utilities.a \
       ../../Drand/src/Drand.a \
       -lm

THREAD_LIBS = -D_REENTRANT -lthread
THREAD_LIBS = -D_REENTRANT -lpthread

DRIVERS = drawGraph testNDperm allInOne testOrderViaND testOrderViaMS \
          testOrderViaMMD testSemi
 
libs :
	cd ../src ; make misc.a
	cd ../../DFrontMtx/src ; make DFrontMtx.a
	cd ../../DLinSystem/src ; make DLinSystem.a
	cd ../../DChvManager/src ; make DChvManager.a
	cd ../../DChvList/src ; make DChvList.a
	cd ../../DDenseMtxManager/src ; make DDenseMtxManager.a
	cd ../../DDenseMtxList/src ; make DDenseMtxList.a
	cd ../../DDenseMtx/src ; make DDenseMtx.a
	cd ../../DChv/src ; make DChv.a
	cd ../../DA2/src ; make DA2.a
	cd ../../DVL/src ; make DVL.a
	cd ../../SymbFac/src ; make SymbFac.a
	cd ../../DPencil/src ; make DPencil.a
	cd ../../Lock/src ; make Lock.a
	cd ../../MSMD/src ; make MSMD.a
	cd ../../GPart/src ; make GPart.a
	cd ../../Network/src ; make Network.a
	cd ../../BPG/src ; make BPG.a
	cd ../../BKL/src ; make BKL.a
	cd ../../ETree/src ; make ETree.a
	cd ../../DSTree/src ; make DSTree.a
	cd ../../Tree/src ; make Tree.a
	cd ../../Graph/src ; make Graph.a
	cd ../../DInpMtx/src ; make DInpMtx.a
	cd ../../IIheap/src ; make IIheap.a
	cd ../../IVL/src ; make IVL.a
	cd ../../Perm/src ; make Perm.a
	cd ../../Ideq/src ; make Ideq.a
	cd ../../IV/src ; make IV.a
	cd ../../DV/src ; make DV.a
	cd ../../Coords/src ; make Coords.a
	cd ../../Utilities/src ; make Utilities.a
	cd ../../Drand/src ; make Drand.a

all : ${DRIVERS}

clean :
	rm -f *.a *.o ${DRIVERS}

allInOne : allInOne.o libs
	${PURIFY} ${CC} $@.o -o $@ ${LIBS} ${THREAD_LIBS} -lm

drawGraph : drawGraph.o libs
	${PURIFY} ${CC} $@.o -o $@ ${LIBS} -lm

testNDperm : testNDperm.o libs
	${PURIFY} ${CC} $@.o -o $@ ${LIBS} -lm

testOrderViaMMD : testOrderViaMMD.o libs
	${PURIFY} ${CC} $@.o -o $@ ${LIBS} -lm

testOrderViaMS : testOrderViaMS.o libs
	${PURIFY} ${CC} $@.o -o $@ ${LIBS} -lm

testOrderViaND : testOrderViaND.o libs
	${PURIFY} ${CC} $@.o -o $@ ${LIBS} -lm

testSemi : testSemi.o libs
	${PURIFY} ${CC} $@.o -o $@ ${LIBS} -lm
