CC = g++
# FLAGS = -O -pg
FLAGS = -g


main	:	DOLScheme.o Homom.o Interface.o List.o SymbolSet.o DerivTree.o \
		MatrixUtil.o DOLUtil.o LargeNumber.o main.o
	$(CC) $(FLAGS) DOLScheme.o Homom.o Interface.o List.o SymbolSet.o \
	DerivTree.o MatrixUtil.o DOLUtil.o LargeNumber.o main.o -o main -lm -lmp

pure	:	DOLScheme.o Homom.o Interface.o List.o SymbolSet.o DerivTree.o \
		MatrixUtil.o DOLUtil.o LargeNumber.o main.o
	purify -cache-dir=cache -collector=/software/gcc-2.7.2.1/lib/gcc-lib/sparc-sun-sunos4.1.3/2.7.2.1/ld $(CC) $(FLAGS) DOLScheme.o Homom.o Interface.o \
	List.o SymbolSet.o DerivTree.o MatrixUtil.o DOLUtil.o LargeNumber.o \
	main.o -o main -lm -lmp

MatrixUtil.o     :       LargeNumber.h MatrixUtil.h MatrixUtil.C
	$(CC) $(FLAGS) -c MatrixUtil.C

LargeNumber.o   :       LargeNumber.h LargeNumber.C
	$(CC) $(FLAGS) -c LargeNumber.C

DOLScheme.o	:	Homom.h SymbolSet.h DOLScheme.h \
			LargeNumber.h MatrixUtil.h DOLScheme.C
	$(CC) $(FLAGS) -c DOLScheme.C

DOLUtil.o	:	Homom.h SymbolSet.h DOLScheme.h \
			LargeNumber.h MatrixUtil.h DOLUtil.C
	$(CC) $(FLAGS) -c DOLUtil.C 

DerivTree.o	:	SymbolSet.h DerivTree.h DerivTree.C
	$(CC) $(FLAGS) -c DerivTree.C

Homom.o	:	Mapping.h Homom.h Homom.C
	$(CC) $(FLAGS) -c Homom.C

Interface.o	:	Homom.h SymbolSet.h DOLScheme.h Mapping.h Interface.h \
			Interface.C
	$(CC) $(FLAGS) -c Interface.C

List.o	:	Mapping.h List.h List.C
	$(CC) $(FLAGS) -c List.C

SymbolSet.o	:	SymbolSet.h SymbolSet.C
	$(CC) $(FLAGS) -c SymbolSet.C

main.o	:	Homom.h List.h SymbolSet.h DOLScheme.h Interface.h DerivTree.h \
		Mapping.h LargeNumber.h MatrixUtil.h main.C
	$(CC) $(FLAGS) -c main.C

clean	:
	rm -f *.o main
