.SUFFIXES += .exe .tst

CPP = g++
# CPP_OPTIONS = -g -Wall -fsave-memoized -DDMALLOC_FUNC_CHECK
# LINK_OPTIONS =  -lg++ -lstdc++
CPP_OPTIONS  = -g -Wall
LINK_OPTIONS = -lg++ -lstdc++ 

IDIR = -I$(MAINDIR)
LDIR = -L$(MAINDIR)

SEQH = seq.h gseq.h fseq.h
SEQO = seq.o gseq.o fseq.o
CMNH = $(SEQH) common.h
# CMNO = $(SEQO) common.o dmalloc.o
CMNO = $(SEQO) common.o

IDIRS = -I/usr/include/ -I/usr/include/g++/
OBJ = $(CMNO) matrix.o nucleotable.o modules.o stateval.o registry.o hameval.o cluster.o pyrtab.o dictionary.o counttab.o align.o makeranks.o splice.o quads.o

sOBJH = $(CMNH) matrix.h nucleotable.h modules.h stateval.h registry.h hameval.h cluster.h pyrtab.h ibits.h ivector.h dictionary.h counttab.h align.h makeranks.h splice.h quads.h tree.h rep_identify.h rep_entry.h
sOBJ = $(CMNO) matrix.o nucleotable.o modules.o stateval.o registry.o hameval.o cluster.o pyrtab.o ibits.o dictionary.o counttab.o align.o makeranks.o splice.o quads.o tree.o


seq_to_fasta: seq_to_fasta.o seq.o common.o gseq.o
	g++ -o seq_to_fasta -g -O seq.o seq_to_fasta.o common.o gseq.o -lm -lg++

glass: align.o glass.o $(CMNO) nucleotable.o dictionary.o ibits.o
	g++ $(CPP_OPTIONS) -o glass $(CMNO) align.o glass.o dictionary.o ibits.o nucleotable.o $(LINK_OPTIONS)

exonPairs: $(sOBJ) exonPairs.o
	g++ $(CPP_OPTIONS) -o exonPairs $(sOBJ) exonPairs.o $(LINK_OPTIONS) 

rosetta: $(sOBJ) rosetta.o
	g++ $(CPP_OPTIONS) -o rosetta $(sOBJ) rosetta.o $(LINK_OPTIONS) 

rosetta_rioux: $(sOBJ) rosetta_rioux.o
	g++ $(CPP_OPTIONS) -o rosetta_rioux $(sOBJ) rosetta_rioux.o $(LINK_OPTIONS) 

matlab_BAC_picture: $(sOBJ) matlab_BAC_picture.o
	g++ $(CPP_OPTIONS) -o matlab_BAC_picture $(sOBJ) matlab_BAC_picture.o $(LINK_OPTIONS)

extract_77_annotations: extract_77_annotations.o $(CMNO)
	g++ $(CPP_OPTIONS) -o extract_77_annotations $(CMNO) extract_77_annotations.o $(LINK_OPTIONS)


altfind: altfind.o $(sOBJ)
	$(CPP) $(CPP_OPTIONS) $(sOBJ) altfind.o -o altfind $(LINK_OPTIONS)

createGSPfiles: createGSParseFile.o $(CMNO)
	$(CPP) $(CPP_OPTIONS) $(CMNO) createGSParseFile.o -o createGSPfiles $(LINK_OPTIONS)

createMUMaligns: createMUMaligns.o $(CMNO)
	$(CPP) $(CPP_OPTIONS) $(CMNO) createMUMaligns.o -o createMUMaligns $(LINK_OPTIONS)

table2latex: table2latex.o $(CMNO)
	$(CPP) $(CPP_OPTIONS) $(CMNO) table2latex.o -o table2latex $(LINK_OPTIONS)

testBurgeEval: testBurgeEval.o $(sOBJ)
	$(CPP) $(CPP_OPTIONS) $(sOBJ) testBurgeEval.o -o testBurgeEval $(LINK_OPTIONS)

frametestStatistics: frametestStatistics.o $(OBJ)
	$(CPP) $(CPP_OPTIONS) $(OBJ) frametestStatistics.o -o frametestStatistics $(LINK_OPTIONS)

exonLengths: exonLengths.o $(OBJ)
	$(CPP) $(CPP_OPTIONS) $(OBJ) exonLengths.o -o exonLengths $(LINK_OPTIONS)

interiorExonLength: interiorExonLength.o $(CMNO)
	$(CPP) $(CPP_OPTIONS) $(CMNO) interiorExonLength.o -o interiorExonLength $(LINK_OPTIONS)

readEricsList: readEricsList.o $(SEQO)
	$(CPP) $(CPP_OPTIONS) $(SEQO) readEricsList.o -o readEricsList $(LINK_OPTIONS)

stat: stat.o $(sOBJ)
	$(CPP) $(CPP_OPTIONS) $(sOBJ) stat.o -o stat $(LINK_OPTIONS)
	chmod a+rw *.o
	chmod a+rwx stat

filter: filter.o filter.cc $(SEQO)
	g++ -o filter filter.o $(SEQO) $(LINK_OPTIONS)

tt:  tt.o tuples_tables.o nucleotable.o $(CMNO)
	$(CPP) $(CPP_OPTIONS) tt.o tuples_tables.o nucleotable.o $(CMNO) -o tt $(LINK_OPTIONS)

frameFilter: frametest.o nucleotable.o $(CMNO)
	$(CPP) $(CPP_OPTIONS) frametest.o nucleotable.o $(CMNO) -o frameFilter $(LINK_OPTIONS)

testinf: tstinf.o $(OBJ)
	$(CPP) $(CPP_OPTIONS) $(OBJ) tstinf.o -o tstinf $(LINK_OPTIONS)

server: async.o server.o mainprog.o $(sOBJ)
	$(CPP) $(CPP_OPTIONS) $(sOBJ) mainprog.o async.o server.o -o server $(LINK_OPTIONS)
	chmod a+rw *.o
	chmod a+rwx server

serverlib: async.o server.o mainprog.o $(OBJ)
	$(CPP) $(CPP_OPTIONS) -lsocket -lnsl $(OBJ) mainprog.o async.o server.o -o server $(LINK_OPTIONS)
	chmod a+rw *.o
	chmod a+rwx server

makeranks: makeranks.o dictionary.o $(CMNO)
	$(CPP) $(CPP_OPTIONS) makeranks.o dictionary.o $(CMNO) -o makeranks $(LINK_OPTIONS)

stat.o:		 modules-stat.cc $(sOBJH)
	g++ $(CPP_OPTIONS) -c -o stat.o modules-stat.cc $(IDIRS)

glass.o:         $(CMNH) glass.cc nucleotable.h dictionary.h
testBurgeEval.o: $(CMNH) testBurgeEval.cc
tree.o:          $(CMNH) quads.h tree.cc tree.h
exonPairs.o:     $(sOBJH) exonPairs.cc rep_identify.h
rosetta.o:       $(sOBJH) rosetta.cc rep_identify.h
align.o:         align.h align.cc $(CMNH) nucleotable.h dictionary.h ibits.h ivector.h internals.h
brancheval.o:    brancheval.h brancheval.cc
read.o:          read.h read.cc $(CMNH) cluster.h pyrtab.h counttab.h brancheval.h stateval.h hameval.h
mainprog.o:	 mainprog.cc mainprog.h modules.h modules.cc
async.o: 	 async.cc async.h
server.o:	 server.cc async.h server.h mainprog.h
tstinf.o:        tstinf.cc $(CMNH) modules.h nucleotable.h matrix.h
tt.o:		 tt.cc tuples_tables.h $(CMNH) rep_id.h
common.o:	 common.h common.cc $(SEQH)
tuples_tables.o: tuples_tables.h tuples_tables.cc nucleotable.h $(CMNH)
counttab.o:      counttab.h counttab.cc
stateval.o:      stateval.h stateval.cc eval.h hameval.h hameval.cc cluster.h cluster.cc pyrtab.h pyrtab.cc $(SEQH) vector.h counttab.h counttab.cc quads.h splice.h tree.h
cluster.o:	 cluster.cc cluster.h $(SEQH)
pyrtab.o:	 pyrtab.cc pyrtab.h $(SEQH)
pairtable.o:     pairtable.h pairtable.cc $(SEQH)
matrix.o:        matrix.h matrix.cc vector.h
registry.o:      registry.h registry.cc vector.h
modules.o:       modules.h modules.cc nucleotable.h matrix.h stateval.h registry.h registry.h hameval.h rep_identify.h makeranks.h dictionary.h align.h $(CMNH) quads.h splice.h 
nucleotable.o:   nucleotable.cc nucleotable.h $(CMNH)
hameval.o:	 hameval.cc hameval.h
cluster.o:       cluster.cc cluster.h
frametest.o:     fseq.h fseq.cc
dictionary.o:	 dictionary.cc dictionary.h internals.h ivector.h ibits.h ibits.o 
ibits.o:	 ibits.cc ibits.h 
readEricsList.o: readEricsList.cc $(SEQH)
interiorExonLength.o: interiorExonLength.cc $(CMNH)
makeranks.o:     makeranks.h makeranks.cc dictionary.h
splice.o:        $(SEQH) quads.h splice.h splice.cc tree.h
quads.o:         $(SEQH) quads.h quads.cc
createGSParseFile.o: createGSParseFile.cc $(CMNH)
createMUMaligns.o: createMUMaligns.cc $(CMNH)
table2latex.o: 	table2latex.cc $(CMNH)
matlab_BAC_picture.o: matlab_BAC_picture.cc $(sOBJH)
extract_77_annotations.o: extract_77_annotations.cc $(CMNH)
seq_to_fasta.o: seq_to_fasta.cc seq.h common.h

seq.o:   seq.cc seq.h
gseq.o:  gseq.cc gseq.h seq.h
fseq.o:  fseq.cc $(SEQH)

%.o: %.cc
	$(CPP) $(CPP_OPTIONS) -c $< $(IDIRS)

clean:
	rm -f tt server stat *.o
 

# DO NOT DELETE THIS LINE -- make depend depends on it.



